私の質問はJPAに似ていますが、多対多に永続化されます
しかし、ロールとユーザーの 2 つのエンティティがあり、多対多の関係があり、rolesusers テーブルで表されます。私のアプリケーションでは、JSF 2.0 を使用しています。ユーザー データを操作するためのフォームと、すべてのロール名のリストを含むフォームと、ユーザーのロールを表示するための selectBooleanCheckbox があります (はいの場合はチェックされます)。さらに、ロールを追加または削除する (selectBooleanCheckbox をチェックまたはチェック解除する) 可能性が必要ですが、それを行うと、次の 2 つの問題があります。
1: このユーザーの役割を確認するには、selectBooleanCheckbox の値に次の構文を使用します。
<h:column>
<f:facet name="header">
<h:outputText value="ASIGNADO"/>
</f:facet>
<h:panelGroup rendered="#{usuariosController.selected.rolesList.contains(itemRole)}">
<h:selectBooleanCheckbox value="#{true}">
<f:ajax listener="#{rolesView.selectRoleListener(usuariosController.selected, itemRole)}" render="@form" />
</h:selectBooleanCheckbox>
</h:panelGroup>
<h:panelGroup rendered="#{!usuariosController.selected.rolesList.contains(itemRole)}">
<h:selectBooleanCheckbox value="#{false}">
<f:ajax listener="#{rolesView.selectRoleListener(usuariosController.selected, itemRole)}" render="@form" />
</h:selectBooleanCheckbox>
</h:panelGroup>
</h:column>
しかし、selectRoleListener
が実行されると、 がスローされjavax.faces.component.UpdateModelException /users.xhtml @224,102 value="#{true}": Illegal Syntax for Set Operation
ます。
2: を削除してvalue="#{true}"
に置き換えるとvalue="true"
、ユーザーがリストで指定されたロールを持っているときにチェックボックスが選択されていませんが、selectRoleListener が実行されているように見えますが、変更はデータベースに表示されません。
このケースで私を助けてもらえますか?あなたが私を理解してくれることを願っています。
ありがとうございました!