在JSF页面中使用<ui:repeat>
时出现问题。我有一个arrayList
传递给它,但是它从不遍历显示内容。
我知道有内容,因为当我使用<h:datatable>
做完全相同的事情时,它会显示内容。因此,如果有人可以向我解释为什么使用<ui:repeat>
不能正常工作,而使用<h:datatable>
可以正常工作,那太好了。
这是<h:datatable>
代码:
<h:dataTable value="#{proposalAction.proposal.proposalCountries}" var="pc" rendered="#{proposalAction.proposal.proposalCountries !=null and proposalAction.proposal.proposalCountries.size() > 0}">
<h:column>
<img src="/resources/images/flags/#{utils.getValidCountryFlagDisplayCode(pc.country)}.png" title="#{pc.country.getDisplayName(localeSelector.locale)}" alt="#{pc.country.getDisplayName(localeSelector.locale)}" width="20" />
 
<h:outputText value="#{pc.country.getDisplayName(localeSelector.locale)}" />
</h:column>
</h:dataTable>
以下是使用<ui:repeat>
代码的代码:
<ul>
<ui:repeat items="#{proposalAction.proposal.proposalCountries}" var="pc" rendered="#{proposalAction.proposal.proposalCountries !=null and proposalAction.proposal.proposalCountries.size() > 0}">
<li>
<img src="/resources/images/flags/#{utils.getValidCountryFlagDisplayCode(pc.country)}.png" title="#{pc.country.getDisplayName(localeSelector.locale)}" alt="#{pc.country.getDisplayName(localeSelector.locale)}" width="20" />
 <h:outputText value="#{pc.country.getDisplayName(localeSelector.locale)}" />
</li>
</ui:repeat>
</ul>
如您所见,它们是相同的。数据表显示了国家/地区,但转发器未显示<ul>
内的任何内容……我很茫然……请帮助!
答案 0 :(得分:1)
如果您有合适的吸气剂和吸气剂,请尝试使用#{pc.country.displayName}
作为h:outputText
标签的值。 ui:repeat
没有items
属性,因此请使用value
。我假设displayName
是您主列表中Country
的属性。然后,您可以在getter中编写特定的Locale
逻辑。
这应该有效:
<ul>
<ui:repeat value="#{proposalAction.proposal.proposalCountries}" var="pc" rendered="#{proposalAction.proposal.proposalCountries !=null and proposalAction.proposal.proposalCountries.size() > 0}">
<li>
<h:outputText value="#{pc.country.displayName}" />
</li>
</ui:repeat>
</ul>
也对您的img
标签进行了此类调整。
您还应该将rendered
的逻辑放在后端bean中,并在UI上使用单个布尔值。例如redered="#{displayCountries}
。