3

ui:repeat の ajax 更新に問題があります。更新は、ui:repeat の外側の commandButton からトリガーされます (以下のコードを参照)。変数priceHourは、他の価格 (週、モナトなど) を計算するために必要です。

<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 と価格が更新されません。なにが問題ですか?update"myForm:alvs"update":myForm:alvs"
も 試しました:何もありません! 私はprimefaces 3.5を使用してい ます事前に感謝します

4

3 に答える 3

16

ui:repeatはレンダリングされたコンポーネントではないため、HTML には何も表示されません。レンダリングされていないものは更新できません。また、属性ui:repeatすらありません。id

たとえば、次のようにui:repeatコンポーネント内にラップする必要があります。h:panelGroup

<h:panelGroup id="alvs">
    <ui:repeat ...>
    </ui:repeat>
</h:panelGroup>

ボタンの panelgroup を更新します。

<p:commandButton value="Calculator" actionListener="#{myBean.priceCalc}" process="@this,alvs" update="alvs" />

:hour特定できないため、 を削除したことに注意してください。各 ID は繰り返しごとに異なります。

より詳しい情報 :

于 2013-06-20T22:59:57.120 に答える
0

残念ながら、それが機能しない理由はわかりません。JSF を使用しているときにそのようなことが起こるのは嫌です。ui:repeat回避策として、を aで囲み、p:outputPanelそのパネルを更新してみてください。

于 2013-06-20T22:31:06.643 に答える