私はモーダルダイアログを持っています。ユーザーは、別のユーザーに基づいてロールを選択および選択解除し、更新するためにデータベースに送信できます。PrimeFaces ManyCheckbox ArrayListがモーダルダイアログ内で更新されない
しかし、デバッグの後、ManyCheckbox
をバックアップArrayList
は更新されない、とselectedRoles
ArrayList
が、それはもともと何だったかに残っています。例えば
:
私はアプリケーションに
をロードする役割を持つデータベース内の1人のユーザー管理」
私は、このユーザーを編集しようとするとダイアログが開きますがあります「管理者」チェックボックスが選択されています。
私は、「ユーザー」役割のチェックボックスをクリックして、
selectedRoles配列は、ここで代わりに「管理者」と「ユーザーの
のまだばかりにadmin 'です私ですが提出クリックダイアログモーダル:
<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>
UserView:
@ManagedBean(name="usersView", eager=true)
@ApplicationScoped
private ArrayList<String> selectedRoles;
public Arraylist<String> getSelectedRoles()
{
return this.selectedRoles;
}
public void setSelectedRoles(ArrayList<String> roles)
{
this.selectedRoles = roles;
}
public void editUserRole(ActionEvent actionEvent)
{
// This method literally just loops through all users and matches the one we're looking at
User user = findUser();
if (user != null)
{
// gives user checked roles in database and local session
addSelectedRoles(user);
ArrayList<String> rolesToRemove = user.getRoleNames();
rolesToRemove.removeAll(selectedRoles);
// removes user unchecked roles in database and local session
removeSelectedRoles(user, rolesToRemove);
}
else
{
// Handle exception...
}
}
私は制限されたVMで作業しているため、コピー&ペーストできません。これは私が投稿できるすべての情報ですが、これで十分です。
ご協力いただきまして誠にありがとうございます。
@BalusC私の悪い、stackoverflowは常にタグとしてそれをお勧めします、私は将来の質問でこれを念頭に置いておきます。 – James
バッキングビーンコードを投稿することができます – Ankit
@Ankit私はこれを今投稿しました。 – James