3

次のようなページがあります。

<h:form id="form">
    <h:panelGroup id="panel">
        <ui:repeat id="repeat" value="#{myBean.ojects}" var="item">
            <h:panelGroup id="itemPanel">

                <h:selectOneMenu ..... >
                    <p:ajax process="@this" update="itemPanel"/>
                    <f:attribute name="item" value="#{item}" />
                </h:selectOneMenu ..... >

            <h:inputText id="value" value="#{item.property}"/>

            </h:panelGroup>
        </ui:repeat>
    </h:panelGroup>
</h:form>

私の問題は、Bean 内のオブジェクト参照の「プロパティ」値を変更し、「itemPanel」panelGroup を更新した後、ui:repeat をラップした panelGroup 全体を更新しない限り、変更された値を返さないことです。最初のケースでは、以前の値のみで更新が行われたことを応答で確認できます。私は本当に ui:repeat の一部 (値が変更された) の一部のみを再ロードできる必要があります。そうしないと追加されますが、ui:repeat の他の部分 (サイクル) 内の送信されていないデータは失われます。

アップデート:

繰り返し全体を含むパネルまたはフォームを送信する必要がある場合、実際には気にしないので、更新しても値は変更されませんが、プロセス値を変更しても何も更新されません..: (

4

2 に答える 2

0

あなたはこのようにそれを試すことができます:

<h:form id="form">
    <h:panelGroup id="panel">
        <ui:repeat id="repeat" value="#{myBean.ojects}" var="item" varStatus="varStatus">
            <h:panelGroup id="itemPanel">

                <h:selectOneMenu ..... >
                    <p:ajax process="@this" update="repeat:#{varStatus.index}:itemPanel"/>
                    <f:attribute name="item" value="#{item}" />
                </h:selectOneMenu ..... >

                <h:inputText id="value" value="#{item.property}"/>

            </h:panelGroup>
        </ui:repeat>
    </h:panelGroup>
</h:form>
于 2016-03-07T18:46:23.873 に答える