JSF 2.0中的嵌套数据表

时间:2011-09-21 01:24:39

标签: jsf jsf-2

我正在尝试提取问题和相关答案。我能够很好地解决问题,但嵌套的数据表甚至不能识别每个答案都具有的属性,IDE也指出了这一点。也许这不是解决这个问题的正确方法。如何迭代与每个问题相关的答案?

 <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>

2 个答案:

答案 0 :(得分:8)

您需要将列放在<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属性以进行更多自我记录,您可能希望重命名questionTitlequestionBody分别answertitlebodybody,这样你就不会重复含义了)

答案 1 :(得分:1)

您也可以使用PrimeFaces在BalusC的回答中提到相同的内容。只需将<h:dataTable>替换为<p:dataTable>,同样也适用于列标记。您可以使用PrimeFaces创建嵌套数据表。我建议人们使用PrimeFaces,因为它减少了人们在编写/修改CSS定义上花费的时间。