更新ui:重复部分JSF Primefaces

时间:2013-05-16 19:52:22

标签: java jsf primefaces repeat

A有这样的页面:

<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内对象引用的“property”值并更新“itemPanel”panelGroup后,它永远不会返回修改后的值,除非我更新了我围绕ui包裹的整个panelGroup :重复。在第一种情况下,我可以在响应中看到更新已经发生,只有前一个值。我真的必须能够只显示ui的一部分:重复(在值已更改的情况下),否则添加,但未在ui的其他部分(周期)内提交数据:重复将丢失。

更新

我实际上不在乎,如果我必须提交包含整个重复的面板或表单,那么当我更新它时,值不会改变,但是如果我更改过程值,则根本不会更新任何内容.. :(

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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

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

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

请记住输入ID,因为必须进行更新