Primefaces - ui:重复组件不会更新

时间:2013-06-20 21:43:59

标签: ajax primefaces

我有一个问题,ajax更新一个ui:重复。更新是从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:重复并且价格没有更新。怎么了?
我也试过更新“myForm:alvs”更新“:myForm:alvs”:没事! 我正在使用primefaces 3.5
提前致谢

3 个答案:

答案 0 :(得分:13)

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都会有所不同。

更多信息:

答案 1 :(得分:2)

我遇到了同样的问题。建议的答案对我来说并不起作用:ui:重复并不想用ajax更新,无论我做什么。我使用PrimeFaces数据列表,它就像一个魅力。

http://www.primefaces.org/showcase/ui/data/dataList.xhtml

答案 2 :(得分:0)

我担心我不知道它不起作用的原因,我讨厌当我和JSF合作时发生这种事情。在解决方法时,您可以尝试使用ui:repeat围绕p:outputPanel,然后更新该面板。