对象更改为null

时间:2017-01-18 19:25:17

标签: jsf primefaces jsf-2

示例的上下文: 该示例首先包括在数据表扩展中显示每个角色的组列表 然后,显示分配给每个组的用户列表,并检查从该角色中受益的用户。 (这部分功能齐全)

问题我想删除角色给用户的分配并完成我使用此代码,

 <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 ");
    }

感谢您的帮助

1 个答案:

答案 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
}

因此我们无法传递自定义值 - 侦听器始终是事件处理程序。

我希望找到解决问题的方法很有帮助。