SelectOneMenu的SelectItems始终为null

时间:2013-05-10 06:03:36

标签: java hibernate jsf

当我在控制台中打印所选项目时,它始终返回为空

这是在我的ManagedBean中创建SelectItem的方法:

public List<String> getlisteMatricule() throws HibernateException
{
    List<String> matricules = new ArrayList<String>();



    for (Vehicule v : vehiculedao.getAll())
    {
        matricules.add(v.getMatricule());
        System.out.println(v.getMatricule());
    }
    return matricules ;
}


public List<SelectItem> getAllMatricules()
{
    List<SelectItem> options = new ArrayList<SelectItem>();
    List<String> listMatricules = getlisteMatricule();

    for (String mat : listMatricules)
    {  

        options.add(new SelectItem(mat));
        System.out.println("items = " + new SelectItem(mat));
    }
    return options ;
}

这是我模型中的变量,它包含getter和setter以及构造函数:

public class Program
{ 
private int id_progf;
private int nbrHeure;
private float montantGlobal;
private String commentaire;
private int cin_mon;
private String matricule;
private int cin_cand;

///gettersand setters
  ....   }

从数据库中引入变量的方法(List)

@Override
public Vehicule getMatricule(String matricule) {
    Session session = HibernateUtil.currentSession();
    Vehicule v=(Vehicule)session.get(Vehicule.class, matricule);
    return v;
}

最后是我的xhtml文件,它包含以下形式:

<h:panelGrid columns="2" >

                        <h:outputText value="Moniteur :" />
                        <h:selectOneMenu id="listeNomPrenom" title="Nom et Prenom"  value="{#programMB.np}">
                            <f:selectItems value="#{moniteurMB.allNomPrenom}" />
                        </h:selectOneMenu>

                        <h:outputText value="Vehicule :" />
                        <h:selectOneMenu id="ListeMatricules" title="Matricules" value="{#programMB.program.matricule}">
                            <f:selectItems value="#{vehiculeMB.allMatricules}"  />
                        </h:selectOneMenu>

                        <h:outputText value="Nombre heures:" />
                        <p:inputText value="#{programMB.program.nbrHeure}" />


            </h:panelGrid>

              <p:commandButton  value="Save" action="#{programMB.ajouterProg}" />

1 个答案:

答案 0 :(得分:0)

第一眼看,我看到问题出现在你的selectOneMenu的value属性中:

        <h:selectOneMenu id="listeNomPrenom" title="Nom et Prenom"  value="{#programMB.np}">
               <f:selectItems value="#{moniteurMB.allNomPrenom}" />
         </h:selectOneMenu>

        <h:selectOneMenu id="ListeMatricules" title="Matricules" value="{#programMB.program.matricule}">
                 <f:selectItems value="#{vehiculeMB.allMatricules}"  />
         </h:selectOneMenu>

在他们两个中你只是把#推到了错误的地方。将value="{#programMB.np}"更改为value="#{programMB.np}",将value="{#programMB.program.matricule}"更改为value="#{programMB.program.matricule}",它应该适合您!