示例的上下文: 该示例首先包括在数据表扩展中显示每个角色的组列表 然后,显示分配给每个组的用户列表,并检查从该角色中受益的用户。 (这部分功能齐全)
问题我想删除角色给用户的分配并完成我使用此代码,
<p:ajax event="rowUnselectCheckbox"
listener="#{roleMB.deleteAffectationRU(rl,ut)}"
update=":rightForm:roleDataTable:dataGroupe:dataUtilisateur :rightForm:formAjout:message"
process="@this"/>
角色参数rl通过,但用户参数ut传递null
XHTML
<p:dataTable id="roleDataTable" var="rl" value="#{roleMB.roles} rowKey="#{rl.id}selection="#{roleMB.selectedRoles}">
<p:column style="width:16px">
<p:rowToggler /></p:column>
<p:column selectionMode="multiple" style="width:16px;text-align:center" />
<p:column headerText="Designation">
<h:outputText value="#{rl.designation}" /></p:column>
<p:rowExpansion>
<p:dataTable id="dataGroupe" value="#{rl.affectationsRG}" var="document">
<p:column style="width:16px">
<p:rowToggler /></p:column>
<p:column headerText="Designation">
<h:outputText value="#{document.groupe.designation}" /></p:column>
<p:ajax event="rowToggle"
listener="#{roleMB.listerUtilisateur(rl,document.groupe)}"
update=":rightForm:roleDataTable:dataGroupe:dataUtilisateur"
process="@this"/>
<p:rowExpansion>
<p:dataTable id="dataUtilisateur"
value="#{roleMB.utilisateursGroupe}" var="ut" selection="#{roleMB.selectedUtilisateurs}" rowKey="#{ut.id}">
<p:column selectionMode="multiple" style="width:16px;text- align:center" />
<p:column headerText="login">
<h:outputText value="#{ut.login}" /></p:column>
<p:ajax event="rowUnselectCheckbox"
listener="#{roleMB.deleteAffectationRU(rl,ut)}"
update=":rightForm:roleDataTable:dataGroupe:dataUtilisateur :rightForm:formAjout:message"
process="@this"/>
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
managedBean
public void deleteAffectationRU(Role rl,Utilisateur ut ){
System.out.println("Role "+rl.getDesignation());
System.out.println("User "+ut);
roleService.deleteRoleUser(ut.getId(), rl.getId());
Message.constructInforMessage("role deleted ");
}
感谢您的帮助
答案 0 :(得分:1)
支持bean上的侦听器方法实现将接收事件。据我查看文档后,据我所知,
<p:ajax event="rowUnselectCheckbox"
listener="#{roleMB.deleteAffectationRU}"
update=":rightForm:roleDataTable:dataGroupe:dataUtilisateur :rightForm:formAjout:message"
process="@this"/>
应该由方法
处理public void deleteAffectationRU(UnselectEvent event) {
// implementation
}
因此我们无法传递自定义值 - 侦听器始终是事件处理程序。
我希望找到解决问题的方法很有帮助。