我正在尝试提取问题和相关答案。我能够很好地解决问题,但嵌套的数据表甚至不能识别每个答案都具有的属性,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>
答案 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>
(请注意,我更改了rendered
和var
属性以进行更多自我记录,您可能希望重命名questionTitle
,questionBody
分别answer
到title
,body
和body
,这样你就不会重复含义了)
答案 1 :(得分:1)
您也可以使用PrimeFaces在BalusC的回答中提到相同的内容。只需将<h:dataTable>
替换为<p:dataTable>
,同样也适用于列标记。您可以使用PrimeFaces创建嵌套数据表。我建议人们使用PrimeFaces,因为它减少了人们在编写/修改CSS定义上花费的时间。