【问题标题】:p:selectManyCheckbox : getting the selected values into beanp:selectManyCheckbox : 将选定的值放入 bean
【发布时间】:2014-05-26 02:14:44
【问题描述】:

我想将资源列表分配给项目,然后我使用 selectManyCheckbox :

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

然后这是我的 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;
    }

【问题讨论】:

    标签: jsf jakarta-ee web primefaces


    【解决方案1】:

    如果您希望在 Primeface 数据表上使用基于复选框的多选,则无需使用显式 h:selectManyCheckbox

    您可以通过在第一个/最后一个p:column 上指定selectionMode="multiple" 属性来做到这一点。

    请参阅Primefaces Showcase

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2020-01-01
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 2013-07-06
      相关资源
      最近更新 更多