2011-09-21 68 views
3

我正在嘗試獲取問題和相關答案。我能夠很好地解決問題,但嵌套的數據表甚至不能識別每個答案的屬性,IDE也指出了這一點。也許這不是正確的方式去做這件事。我如何迭代與每個問題相關的答案?JSF 2.0中的嵌套數據表

<h:dataTable value="#{questionBacking.recentlyAskedQuestions}" var="questions" 
       rendered="#{questionBacking.recentlyAskedQuestions.size() > 0}" 
       border="1"> 

       <h:column> 

        <h:outputText value="#{questions.questionTitle}" /> 

        <br/> 
        <h:outputText value="#{questions.questionBody}" /> 

       </h:column> 

       <h:dataTable value="#{questions.answers}" var="answers"> 
       <tr> 
        <h:outputText value="#{answers.answer}" /> 
       </tr> 


       </h:dataTable> 

    </h:dataTable> 

回答

7

你需要把一個<h:column>裏面列。

<h:dataTable value="#{questionBacking.recentlyAskedQuestions}" var="question" rendered="#{not empty questionBacking.recentlyAskedQuestions}"> 
    <h:column> 
     <h:outputText value="#{question.questionTitle}" /> 
     <br/> 
     <h:outputText value="#{question.questionBody}" /> 
    </h:column> 
    <h:column> 
     <h:dataTable value="#{question.answers}" var="answer"> 
      <h:column> 
       <h:outputText value="#{answer.answer}" /> 
      </h:column> 
     </h:dataTable> 
    </h:column> 
</h:dataTable> 

(請注意,我改變了renderedvar屬性是多一點自我記錄,你可能要分別重新命名questionTitlequestionBodyanswertitlebodybody以及讓你不要複製含義)

+0

answers.answer應該調用getAnswer(),但編輯器甚至不會實際列出「答案」作爲屬性。儘管IDE的建議我把它放在那裏,它仍然沒有得到答案 - 它顯示一個空的列。 – Onur

+0

然後問題是由別的東西引起的。也許沒有答案?如果屬性名稱錯誤,那麼您會收到一個'PropertyNotFoundException'。 – BalusC

+0

即使我用替換它,它仍然不會給我任何錯誤。這確實很奇怪,因爲getAnswer是在Answer實體類中定義的。 – Onur

0

您可以使用PrimeFaces做BalusC的答案中提及的同樣的事情。只需將<h:dataTable>替換爲<p:dataTable>,列標籤也是如此。您可以使用PrimeFaces創建嵌套數據表。我建議人們使用PrimeFaces,因爲它可以減少人們編寫/修改css定義的時間。