2013-05-10 2 views
-2

Когда я проверить, напечатав выбранный элемент в консоли, он всегда возвращается в нульSelectItems из SelectOneMenu всегда нуль

здесь метод, который создает SelectItem в моем ManagedBean:

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

И вот мои переменные в моей модели, которые содержат сорбент и сеттеры и конструктор:

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

Methode, которые приносят переменные из базы данных (список)

@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

Это кажется неправильным: value = "{# programMB.np}". У вас должно быть # перед фигурными скобками – user219882

+1

Если 'vehicleuledao.getAll()' возвращает пустой список, почему именно вы думаете, что проблема в стороне JSF? Разве не логичнее, что проблема в самом деле заключается в коде, стоящем за этим методом getAll()? Все, что JSF-код является чистым шумом, и вы должны переписать вопрос таким образом, чтобы его задавали в контексте Hibernate. – BalusC

+2

О несвязанной ноте: прекратите делать бизнес-логику в методах геттера. – BalusC

ответ

0

В первый взгляд, я увидел, что проблема заключается в атрибуте value обоих ваших selectOneMenu ниже:

 <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}", и он должен сработать для вас!

+0

thk вы действительно это была проблема дыры, и это была разумная ошибка, которую я не фигурировал. спасибо Sazzadur Rahaman :) –

+0

Добро пожаловать ... :) –

Смежные вопросы