В тази публикация отличният BalusC посочи използването на ‹c :forEach›, за да получите параметрите по време на компилация.
Кодът
Имам по-сложна версия на това с променливо количество параметри (‹f:param› елементи), които са базирани на друга част от формуляра. В горната част на формуляра има DataTable с всички възможни "Критерии". Долната част има PrimeFaces graphicImage, чието съдържание се основава на селекциите в тези критерии, включително само критериите, които се използват.
<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 въз основа на действителните резултати от самото обратно изпращане?