我有一个模态对话框,用户可以根据其他用户选择和取消选择角色,然后将其提交给要更新的数据库。
但是,调试后,支持ArrayList
的{{1}}不会更新,ManyCheckbox
selectedRoles
仍然保持原来的状态。
例如:
我加载了应用
数据库中有一个角色为“admin”的用户
我尝试编辑此用户并打开对话框,选中“admin”复选框。
点击“用户”角色复选框,然后点击“提交”
selectedRoles数组仍然只是'admin'而不是'admin'和'user'
这是我的对话模式:
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>
我正在使用受限制的虚拟机,所以我无法复制和粘贴,这是我可以发布的所有信息,我相信这已经足够了。
非常感谢任何帮助。
答案 0 :(得分:0)
我通过删除process="@this"
解决了我的问题,现在ArrayList正在更新。
process="@this"
表示commandLink的当前组件,因此它没有更新。