在这篇文章中,优秀的 BalusC 指出了使用 <c:forEach> 在构建时获取参数。
编码
我有一个更复杂的版本,其中包含基于表单另一部分的可变数量的参数(<f:param> 元素)。表格的顶部有一个包含所有可能“标准”的数据表。底部有一个 PrimeFaces 图形图像,其内容基于这些标准中的选择,仅包括使用的标准。
<p:dataTable var='criterion' value='#{criteria}'
binding="#{searchBean.criteriaList}" id="#{id}">
... each row shows a criteria, which has a parameter name, an operator, and a value ...
... each row may be set or not set ...
</p:dataTable>
<p:graphicImage value="#{searchBean.lineChartImage}">
<c:forEach var="criteriaName" items="#{searchBean.usedCriteriaKeys}">
<f:param name="#{criteriaName}" value="#{searchBean.criteriaMap[criteriaName]}"/>
</c:forEach>
</p:graphicImage>
背景
我知道只要设置了参数,searchBean.lineChartImage 方法就会给我正确的图表。
SearchBean 是一个 RequestScope bean。
我正在使用 JSF 2.1、Tomcat 7.0.22 和 Primefaces 2.2.1。
问题
当我选择/启用一个标准(例如 param="eventDate"、operator="after"、value="2011-10-01")时,graphicImage 的参数是在生命周期早期在 RestoreView 阶段创建树时创建的; 我真正想要的参数集直到 UpdateModelValues 阶段才更新。
有没有办法根据回发本身的实际结果为 p:graphicImage 获取一组参数?