2010-12-07 70 views
1

Je dois afficher une zone de liste avec l'étiquette comme valeur "nom" & J'utilise h: selectOneListbox.Comment définir l'étiquette dans h: selectOneListbox?

Mon code est:

<h:selectOneListbox id="select" value"#{trial.trials}" size="1" title="Select Item..."> 
<f:selectItems value="#{trial.trials}/> 
</h:selectOneListbox> 

Mon haricot d'essai est:

public class trial{ 

List<trialDataBean> trials = new ArrayList<trialDataBean>(); 


public trial(){ 
trialDatBean tdb = new trialDataBean(1,"aatmiya"); 
trials.add(tdb); 
} 

public List<trialDataBean> getTrials(){ 
return trials; 
} 

public void setTrials() { 
this.trials = trials; 
} 

} 

trialDataBean possède une propriété "nom" & Je veux le définir comme une étiquette de la zone de liste. Comment est-ce que je fais ceci?

Répondre

2

1.x JSF, vous devez créer un List<SelectItem> en fonction de votre List<Trial>. Le constructeur de SelectItem peut prendre la valeur de l'option comme premier argument et l'étiquette de l'option comme second argument.

public class Bean { 

    private Trial selectedTrial; 
    private List<Trial> trials; 
    private List<SelectItem> selectTrials; 

    public Bean() { 
     trials = loadItSomehow(); 
     selectTrials = new ArrayList<SelectItem>(); 
     for (Trial trial : trials) { 
      selectTrials.add(new SelectItem(trial, trial.getName())); 
     } 
    } 

    // ... 
} 

Ensuite, vous pouvez l'utiliser dans la vue comme suit:

<h:selectOneListbox value="#{bean.selectedTrial}" converter="trialConverter"> 
    <f:selectItems value="#{bean.selectTrials}" /> 
</h:selectOneListbox> 

Il vous suffit de fournir une coutume Converter qui convertit entre Trial et String. Plus de détails peuvent être trouvés dans this article.


2.x JSF, vous pouvez omettre le List<SelectItem> et utiliser la nouvelle place var attribut dans f:selectItems:

<h:selectOneListbox value="#{bean.selectedTrial}" converter="trialConverter"> 
    <f:selectItems value="#{bean.trials}" var="trial" 
     itemValue="#{trial}" itemLabel="#{trial.name}" /> 
</h:selectOneListbox> 
+1

juste de passer de JSF1 à JSF2 et aimer le nouvel attribut var sur h: selectOneListbox . – scottyab

+0

une idée si et comment je peux gérer le double-clic sur un élément? –

+0

Je suis ce que vous (BalusC) avez fait pour JSF 2 mais quand j'inspecte l'élément en chrome, chacune de mes options a la liste entière comme valeur. Voici mon code: Java private ConnectedUser connection_to_remove; private Liste connected_users; Sur le formulaire submit, je souhaite supprimer le 'connection_to_remove' de la liste' connected_users'. JSP: edhedges

0

Vous pouvez utiliser comme ceci. Je ne suis pas sûr que cela fonctionnera ou pas parce que j'ai utilisé <ice:selectOneMenu> tag et cela a fonctionné parfaitement.

<ice:selectOneListbox 
    id="paymnent" rows="10" tabindex="4" 
    value="#{paymentVoucherReportAction.reportType}" 
    style="width: 200px;height: 20px;"> 
    <f:selectItems id="AutoCmpTasdfasdfasdxtItms11" 
     value="#{paymentVoucherReportAction.lstKeyValueData}" /> 
</ice:selectOneListbox> 

// Bean (Action) Fichier

private List<SelectItem> lstKeyValueData = new ArrayList<SelectItem>(); // getter + setter 

    private String reportType; // getter + setter 

    // put this in your init method 

    List< SelectItem> list = new ArrayList< SelectItem>(); 

    list.add(new SelectItem("PDF Format","PDF Format")); 

    list.add(new SelectItem("XLS Format","XLS Format")); 

    setLstKeyValueData(list); 

    // print this where you want 

    System.out.println(reportType);