2012-08-24 23 views
5

के अंदर जेएसएफ दोहराना मैं डेटाटेबल का उपयोग कर रहा हूं और मुझे गतिशील रूप से कॉलम की संख्या मिलती है। मैं अंदर इस तरह की तरह बार-बार डालने की कोशिश की:dsatable

<h:dataTable value="#{movieUserBean.sits}" var="row" 
     rowClasses="oddRows,evenRows" headerClass="header" 
     styleClass="table" cellpadding="5" cellspacing="0"> 

     <ui:repeat value="#{row}" var="sit"> 
      <h:column> 
      <h:selectBooleanCheckbox value= "#{movieUserBean.checked[sit.id]}"/> 
      </h:column> 
     </ui:repeat> 

कौन बैठता है एक दो आयामों सरणी है, मेरे विचार था कि datatable चाहिए पंक्तियों बैठता है और हर पंक्ति के अंदर हर मूल्य से अधिक छोरों को दोहराने से अधिक लूप (जो विधि प्राप्त करने के साथ सीट नामक एक वस्तु है: getId)।

समस्या यह है कि मुझे एक खाली तालिका मिलती है। ऐसा लगता है कि var "sit" मूल्य प्राप्त नहीं कर रहा है। क्या समस्या यह तथ्य हो सकती है कि डेटाटेबल किसी भी तत्व को अनदेखा करता है जो कॉलम स्कोप में नहीं है?

उत्तर

0

की DynamicColumns उपयोग करने के लिए एक सरल समाधान होगा

<table> 
    <ui:repeat value="#{movieUserBean.sits}" var="row"> 
    <tr> 
     <ui:repeat value="#{row}" var="sit"> 
      <td><h:selectBooleanCheckbox value= "#{movieUserBean.checked[sit.id]}"/></td> 
    </ui:repeat> 
    </tr> 
    </ui:repeat> 
</table> 

आप प्रति पंक्ति यह गड़बड़ हो सकता है चर कॉलम हैं, तो सीएसएस शैलियों के साथ। उदाहरण के लिए पंक्ति 2 पर पंक्तियों और 3 कॉलम पर 5 कॉलम, आप उन्हें कैसे शैलीबद्ध करेंगे। जिस तरह से मैं इसे देखता हूं आप चेकबॉक्स के साथ कब्जे वाले थिएटर में सीटें दिखाना चाहते हैं।

आप ui का उपयोग करने का प्रयास कर सकते हैं: तालिका के साथ जाने के बजाय उल, ली या div के साथ दोहराएं। दृष्टिकोण।