更新ui:repeat部分JSF Primefaces

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”面板组后,除非我更新我包装在ui:repeat周围的整个面板组,否则它永远不会返回修改后的值。在第一种情况下,我可以看到响应中发生了更新,但只有以前的值。我必须能够仅重新加载ui:repeat的一部分(其中值已更改),否则在ui:repeat的其他部分(循环)中添加但未提交的数据将丢失。
更新:
实际上,如果我必须提交包含整个重复的面板或表单,那么当我更新它时值不会改变,但是如果我更改处理值,则根本没有更新..:(

我已经尝试了所有可能的组合,我不认为那是问题所在。 - Peter Jaloveczki
你找到解决方案了吗?我有类似的问题。 - Michal Heneš
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>

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,因为更新是必要的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接