2011-01-25 3 views
0

J'ai créé des entites et facde dans netbeans. Maintenant, je veux créer une requête native pour obtenir seulement deux feilds de la table. Et puis les lier à laComment lier deux valeurs à une liste déroulante dans JSF?

String query = "SELECT DISTINCT(m.idManufacturer),m.hmid " 
       + " FROM model m"; 

@SuppressWarnings("unchecked") 
List<model> modelList = (List&lt;model>) getEntityManager().createNativeQuery(query).getResultList(); 

puis je le code

<f:selectItems itemLabel="#{myController.modelList.idManufacturer}"/> 

pour afficher les valeurs dans la liste déroulante. Mais cela ne semble pas fonctionner. Des idées?

Répondre

0

Essayez de créer la liste de selectItems à partir de votre List<Model> et de donner cet attribut en valeur.

par exemple.

List<SelectItem> modelList = new ArrayList<SelectItem>(); 
    //implement your conversion label value here. 
<f:selectItems value="#{myController.modelList}"/> 
0

Si vous êtes sur 1.x JSF, vous devez fournir un SelectItem[], List<SelectItem> ou Map<String, Object> au value de f:selectItems. Le choix le plus commun est un List<SelectItem>. En supposant que vous voulez utiliser Model#getIdManfacturer() (que je suppose être un Long) à la fois comme étiquette de l'élément et valeur, voici un exemple:

public class Bean { 
    private Long selectedManfacturerId; // +getter +setter 
    private List<SelectItem> selectManfacturerIds; // +getter 

    @PostConstruct 
    public void init() { 
     selectManfacturerIds = new ArrayList<SelectItem>(); 
     List<Manfacturer> manfacturers = getItFromDatabaseSomehow(); 
     for (Manfacturer manfacturer : manfacturers) { 
      selectManfacturerIds.add(new SelectItem(manfacturer.getManfacturerId())); 
     } 
    } 

    // ... 
} 

en combinaison avec

<h:selectOneMenu value="#{bean.selectedManfacturerId}"> 
    <f:selectItems value="#{bean.selectManfacturerIds}" /> 
</h:selectOneMenu> 

Cependant , si vous êtes déjà sur JSF 2.0, vous pouvez également utiliser un List<SomeBean> pour cela. Le nouvel attribut var dans un JSF 2.0 <f:selectItems> vous permet de déclarer l'élément itéré dans la vue. par exemple le coup d'envoi:

public class Bean { 
    private Long selectedManfacturerId; // +getter +setter 
    private List<Manfacturer> manfacturers; // +getter 

    @PostConstruct 
    public void init() { 
     manfacturers = getItFromDatabaseSomehow(); 
    } 

    // ... 
} 

en combinaison avec

<h:selectOneMenu value="#{bean.selectedManfacturerId}"> 
    <f:selectItems value="#{bean.manfacturers}" var="manfacturer" itemValue="#{manfacturer.manfacturerId}" /> 
</h:selectOneMenu> 
Questions connexes