我目前正在将一个Web应用程序从JSF 1.2 / Richfaces 3.3.3迁移到JSF 2.2对于数据迭代,我们使用了来自Richfaces的a4j:repeat。我现在想将迭代器更改为ui:repeat,因为我们想抛出Richfaces。
但是,我遇到了一种非常奇怪的行为。想象一下像这样的代码片段(从原文中简化):
<ui:repeat id="criterions" var="criterion" value="#{AdvancedSearchBean.criterionList}">
<h:panelGroup rendered="#{criterion.searchCriterion.displayType == 'PERSON'}">
<h:inputText value="#{criterion.searchString}"/>
</h:panelGroup>
</ui:repeat>
虽然渲染条件的计算结果肯定为false,但会评估panelGroup中的部分。如果我改变ui:重复到a4j:重复,它工作正常,不评估panelGroup内的部分。
对于我们的代码来说,这是一个真正的问题,因为&#34;标准&#34;变量可以包含不同的对象(扩展相同的超类)。在这种情况下,标准对象不包含名称为&#34; searchString&#34;的属性。 (因为它不属于#34; PERSON&#34;) - &gt;抛出错误。
任何人都可以解释这种行为或有解决方案吗? 我使用的是集成在WildFly 8.0.0.final中的JSF版本(Mojarra 2.2.5-jbossorg-3)
由于 马库斯