当前位置: 动力学知识库 > 问答 > 编程问答 >

jsf - p:selectManyCheckbox : getting the selected values into bean

问题描述:

I want to assign a List of resources to a project and then i use selectManyCheckbox :

the problem is although I select 2 resources. it return an empty list of resources(Utilisateur) but the project is successfully added :

and then this is my xhtml file:

 <p:dataTable id="dta" value="#{UtilisateurComponent.listUtilisateurs()}" var="current" rows="15" paginator="true" paginatorPosition="bottom">

<p:column>

<h:selectManyCheckbox id="selectUser" value="#{ProjetComponent.projet.utilisateurs}" >

<f:selectItem var="utilisateurs" value="#{utilisateurs.iduser}" itemLabel=""/>

<f:converter converterId="entityConverter" />

</h:selectManyCheckbox>

</p:column>

</p:dataTable>

</h:panelGrid>

<h:panelGroup>

<p:commandButton image="save" ajax="false" style="margin-right:20px;" value="#{projetmsgs['navigation.save']}" action="#{ProjetComponent.saveProjetUtilisateurs1(ProjetComponent.projet,ProjetComponent.projet.utilisateurs)}"/>

</h:panelGroup>

</p:panel>

and this is the method save in the ProjetComponent:

private Projet projet;

private Utilisateur utilisateurs;

@Autowired

private ProjetDAO projetDAO;

@Autowired

private UtilisateurDAO utilisateurDAO;

@Autowired

private ProjetService projetService;

@Transactional

public String saveProjetUtilisateurs1(Projet p, List<Utilisateur> utilisateur) {

projet = projetService.saveProjetUtilisateurs(p, utilisateur);

return "/jsf/projet/viewProjet.xhtml";

}

and this the method save in the ProjetService class called by the component ProjetCompnent:

@Transactional

public Projet saveProjetUtilisateurs(Projet projet,List<Utilisateur> ut)

{

projet.setAvancement(projet.getAvancement());

projet.setConfidentialite(projet.getConfidentialite());

projet.setDatedebut(projet.getDatedebut());

projet.setDatefineffective(projet.getDatefineffective());

projet.setDatefinprevu(projet.getDatefinprevu());

projet.setDescription(projet.getDescription());

projet.setDurreprojet(projet.getDurreprojet());

projet.setNomprojet(projet.getNomprojet());

projet.setObjectifprojet(projet.getObjectifprojet());

projet.setStatut(projet.getStatut());

projet.setUtilisateurs(ut);

projet = projetDAO.store(projet);

projetDAO.flush();

return projet;

}

and this is the Projet Entity:

@Entity

public class Projet implements Serializable {

@Id

private Integer idprojet;

@ManyToMany(mappedBy = "projets", fetch = FetchType.LAZY)

java.util.List<com.gestion.projet.domain.Utilisateur> utilisateurs;

}

网友答案:

If you want the Checkbox based multiple selection on Primeface Datatable, no need to use the explicit h:selectManyCheckbox.

You could do that by specifying selectionMode="multiple" attribute on first/last p:column.

See the Primefaces Showcase.

分享给朋友:
您可能感兴趣的文章:
随机阅读: