我有一个问题要Ajax更新ui:repeat。更新是从ui:repeat外部的commandButton触发的(请参见下面的代码)。需要可变的 priceHour 来计算其他价格(周,Monat ..)
<h:form id="myForm"> <ui:repeat id="alvs" var="alv" value="#{myBean.allV}" > <h:panelGroup rendered="#{alv.status == 'ON'}" > <div class="pricing"> <h:outputText styleClass="bold" value="#{alv.shortName}: "/> <p:inputText value="#{alv.priceHour}" id="hour" required="true" > <f:convertNumber pattern="#.##" type="currency" /> </p:inputText> <p:inputText value="#{alv.priceDay}" id="day" > <f:convertNumber pattern="#.##" type="currency" /> </p:inputText> <p:inputText value="#{alv.priceWeek}" id="week" > <f:convertNumber pattern="#.##" type="currency" /> </p:inputText> <p:inputText value="#{alv.priceMonth}" id="month" > <f:convertNumber pattern="#.##" type="currency" /> </p:inputText> </div> </h:panelGroup> <p:messages /> </ui:repeat> <p:commandButton value="Calculator" actionListener="#{myBean.priceCalc}" process="@this,alvs:hour" update="alvs" /> </h:form >
当我单击按钮时,什么也没有发生,并且ui:repeat和价格未更新。怎么了? 我也尝试过 更新“ myForm:alvs” , 更新“:myForm:alvs” :什么都没有! 我正在使用primefaces 3.5 预先感谢
ui:repeat不是呈现的组件,因此您不会在HTML中看到任何有关它的信息。您无法更新未呈现的内容。另外,ui:repeat甚至没有一个id属性。
ui:repeat
id
您需要将ui:repeat组件包装在这样的组件中h:panelGroup:
h:panelGroup
<h:panelGroup id="alvs"> <ui:repeat ...> </ui:repeat> </h:panelGroup>
并在您的按钮中更新面板组:
<p:commandButton value="Calculator" actionListener="#{myBean.priceCalc}" process="@this,alvs" update="alvs" />
请注意,:hour由于您无法指定,我已将其删除,因此每次重复的ID都会有所不同。
:hour
更多信息 :