primefaces selectCheckboxMenu空选的列表

时间:2016-05-24 12:11:57

标签: jsf jsf-2 primefaces

我试图从selectCheckboxMenu中获取所选值,但选择列表始终为空。这是我的jsf形式:

<h:form id="form">
                            <p:dataTable id="singleDT" var="user" value="#{roleBean.users}"
                                rowKey="#{roleBean.users}" rows="12" paginator="true"
                                rowsPerPageTemplate="12,15,22" paginatorPosition="bottom"
                                emptyMessage="Aucun compte présent." reflow="true"
                                editable="false" selectionMode="single">

                                <p:column headerText="Login" filterBy="#{user.username}">
                                    <h:outputText value="#{user.username}" />
                                </p:column>

                                <p:column headerText="Nom" filterBy="#{user.lastname}">
                                    <h:outputText value="#{user.lastname}" />
                                </p:column>

                                <p:column headerText="Prénom" filterBy="#{user.firstName}">
                                    <h:outputText value="#{user.firstName}" />
                                </p:column>

                                <p:column headerText="Email" filterBy="#{user.emal}">
                                    <h:outputText value="#{user.emal}" />
                                </p:column>

                                <p:column headerText="Affécter Roles">


                                    <p:selectCheckboxMenu id="menu"  value="#{roleBean.rolesselected}"
                                         label="Roles"
                                        filter="false" filterMatchMode="startsWith"
                                        panelStyle="width:135px" converter="#{roleconvertor}"  immediate="true" >
                                        <f:selectItems value="#{roleBean.roles}" var="n"
                                            itemValue="#{n}" itemLabel="#{n.description}"
                                            itemDescription="#{n.rolename}"  />

                                    </p:selectCheckboxMenu>



                                </p:column>
                                <p:column width="90">
                                    <p:commandButton styleClass="ui-yelbutton"   immediate="true" process="@form" value="Valider"
                                        title="Remove"
                                        ajax="true" action="#{roleBean.addrole(user)}" />
                                 </p:column>

                            </p:dataTable>

                        </h:form>

这是与managedBean相关的。当我运行jsf页面时,我会显示值列表,我可以检查它。转换器也工作了但是当我尝试测试一个大小的selectrole它总是0。

public class RoleBean implements Serializable {
@Autowired 
UserCatalogueService userservice;
@Autowired
Roleservice roleservice;
List< Role> roles;

List<UserCatalogue> users  ;
private static final long serialVersionUID = 1L;

String notification;

private List<Role> rolesselected  = new ArrayList<Role>();  



@PostConstruct
public void init() {

    roles=roleservice.findAll();

}

public List<Role> getRolesselected() {
    return rolesselected;
}



public void setRolesselected(List<Role> rolesselected) {
    this.rolesselected = rolesselected;
}



public List<UserCatalogue> getUsers() {
    List<UserCatalogue> users= userservice.findAll();
    List<UserCatalogue> users1= userservice.findAll();
    users1.clear();
    for(int i=0; i< users.size(); i++)
    {
        if(users.get(i).getRoles().size()==0)
        {
            System.out.println(users.get(i).getFirstName()+   "est un nouvel utilisateur");
            //users.remove(i);
            users1.add(users.get(i));
        }
    }

    return users1;
}



public String getNotification() {
    notification=getUsers().size()+"  Alerts";
    return notification;
}

public void setNotification(String notification) {
    this.notification = notification;
}


public void setUsers(List<UserCatalogue> users) {
    this.users = users;
}

public List<Role> getRoles() {
    return roleservice.findAll();
}
public void setRoles(List<Role> roles) {
    this.roles = roles;
}






public void addrole( UserCatalogue user)
{


        System.out.println("the size of list is   "+rolesselected.size());


}

}

1 个答案:

答案 0 :(得分:-2)

尝试使用rolesselected

Listarray更改为[]