PrimeFaces ManyCheckbox ArrayList未在模态对话框内更新

时间:2016-06-29 09:03:49

标签: jsf primefaces selectmanycheckbox ajax-update

我有一个模态对话框,用户可以根据其他用户选择和取消选择角色,然后将其提交给要更新的数据库。

但是,调试后,支持ArrayList的{​​{1}}不会更新,ManyCheckbox selectedRoles仍然保持原来的状态。

例如:

  1. 我加载了应用

  2. 数据库中有一个角色为“admin”的用户

  3. 我尝试编辑此用户并打开对话框,选中“admin”复选框。

  4. 点击“用户”角色复选框,然后点击“提交”

  5. selectedRoles数组仍然只是'admin'而不是'admin'和'user'

  6. 这是我的对话模式:

    ArrayList

    用户视图:

    <p:dialog header="Editing User ID: #{usersView.viewUser}" id="editUserDialog" widgetVar="editUserDialog" modal="true" appendTo="@(body)">
        <h:form id="editUserForm">
            <p:selectManyCheckbox id="roleSelect" value="#{usersView.selectedRoles}" layout="grid" columns="3">
                <f:selectItems value="#{rolesView.roles}" var="role" itemLabel="#{role.name}" itemValue="#{role.name}" />
            </p:selectManyCheckbox>
            <p:separator />
            <p:commandButton process="@this" update=":form:tabs:adminView:userTable:userRoleOutput" value="Submit" id="EditUserSubmitButton" actionListener="#{usersView.editUserRole}" oncomplete="PF('editUserDialog').hide();" />
        </h:form>
    </p:dialog>
    

    我正在使用受限制的虚拟机,所以我无法复制和粘贴,这是我可以发布的所有信息,我相信这已经足够了。

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我通过删除process="@this"解决了我的问题,现在ArrayList正在更新。

process="@this"表示commandLink的当前组件,因此它没有更新。