小编典典

Primefaces-ui:repeat组件不会更新

ajax

我有一个问题要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
预先感谢


阅读 284

收藏
2020-07-26

共1个答案

小编典典

ui:repeat不是呈现的组件,因此您不会在HTML中看到任何有关它的信息。您无法更新未呈现的内容。另外,ui:repeat甚至没有一个id属性。

您需要将ui:repeat组件包装在这样的组件中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都会有所不同。

更多信息 :

2020-07-26