我试图获取问题和相关的答案。我能够很好地得到问题,但嵌套的数据表甚至不能识别每个答案所具有的属性,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>
您需要在<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>
(请注意,我将rendered
和var
属性更改为更自我文档化,您可能希望将questionTitle
, questionBody
和answer
分别重命名为title
, body
和body
,以便您不要重复含义)
您也可以使用PrimeFaces完成BalusC回答中提到的相同操作。只需将<h:dataTable>
替换为<p:dataTable>
,列标签也是如此。您可以使用PrimeFaces创建嵌套的数据表。我推荐人们使用PrimeFaces,因为它减少了人们花在编写/修改css定义上的时间。