我的问题类似于JPA 坚持多对多
但是,我有两个实体:角色和用户,具有多对多关系,由角色用户表表示。在我的应用程序中,我使用 JSF 2.0,我有一个表单来操作用户数据,还有一个包含所有角色名称列表的表单和一个 selectBooleanCheckbox 来查看用户的角色(如果是,则选中)。此外,它必须有可能添加或删除角色(选中或取消选中 selectBooleanCheckbox),但是当我这样做时,我有两个问题:
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,但更改在数据库中不可见。
你能帮我处理这个案子吗?我希望你能理解我。
谢谢!