p:selectManyCheckbox:将所选值输入bean

时间:2014-05-26 02:14:44

标签: jsf java-ee web primefaces

我想为项目分配一个资源列表,然后我使用selectManyCheckbox:enter image description here

问题是我选择了2个资源。它返回一个空的资源列表(Utilisateur),但项目已成功添加: enter image description here

然后这是我的xhtml文件:

          <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>

这是保存在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";
    }

这个方法保存在由ProjetCompnent组件调用的ProjetService类中:

@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;
}

这是Projet实体:

@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;
    }

1 个答案:

答案 0 :(得分:0)

如果您希望在Primeface Datatable上基于Checkbox进行多项选择,则无需使用显式h:selectManyCheckbox

您可以通过在第一个/最后一个selectionMode="multiple"上指定p:column属性来实现此目的。

请参阅Primefaces Showcase