一尘不染

成功调用ajax后,数据表不会更新

ajax

我有一个数据表。表中的每一行都有一个commandButton称为 “删除”
,这是为了从模型和视图中删除该行和执行就地更新。作为页脚,我还有一个commandButton叫做 “删除每一行”

最后一个按钮起作用。我单击它,从模型中删除每一行(即,ArrayList包含元素的元素变为空),dataTablefooter facet在视图中将其重新渲染(或更新)。

另一方面,当我单击某一行上的按钮以将其删除时,它会部分起作用。相应的元素已从模型中删除,但视图未更新。该行仍在中,dataTable并且footer facet未更改。

我的代码中包含以下代码users.xhtml

<f:metadata>
    <f:viewParam name="id" value="#{users.id}" />
    <f:event type="preRenderView" listener="#{users.init}" />
</f:metadata>

...

<h:form id="usersForm">
    <p:outputPanel>    
        <p:dataTable id="userTable" value="#{users.user.friendList}" var="friend">
            <p:column>
                <h:outputText value="#{friend.name}" />
            </p:column>
            <p:column>
                <p:commandButton action="#{users.user.removeFriend(friend)}"
                    ajax="true"
                    update="userTable somethingElse" process="@this"
                    onerror="errorDialog.show();"
                    icon="ui-icon-delete"
                    title="delete user">
                </p:commandButton>
            </p:column>

            <f:facet id="somethingElse" name="footer">  
                    aye: ${users.user.xxx}
            </f:facet>
        </p:dataTable>

    </p:outputPanel>

    <p:commandButton action="#{users.user.removeAllFriends()}" ajax="true"
                update="userTable somethingElse"
                process="@this"
                icon="ui-icon-close"
                value="delete all friends?">
    </p:commandButton>


</h:form>

那么,您认为这里的问题是什么?

我正在使用JSF 2.0和Primefaces 3.0


阅读 205

收藏
2020-07-26

共1个答案

一尘不染

我认识到此问题是我们当前PF
3.0页面之一。如果您使用它,它将起作用update="@form"。我还没有真正的时间调查真正的原因,所以我可以将其报告给PF人员,因为此问题并未在所有页面中都得到体现。即使在同一张表中,也可以按预期使用其他按钮。

试试看:

<p:commandButton update="@form" ... />

更新 :考虑一下,可能与的存在有关process="@this"

2020-07-26