2010-12-07 9 views
1

Ich muss ein Listenfeld mit Label als Wert "Name" anzeigen & Ich verwende h: selectOneListbox.Wie setze ich das Label in h: selectOneListbox?

mein Code:

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

Mein Versuch Bohne ist:

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 hat eine Eigenschaft "name" & ich es als Etikett der List-Box festlegen möchten. Wie mache ich das?

Antwort

2

In JSF 1.x, müssen Sie auf Ihrem List<Trial> eine List<SelectItem> basiert. Der Konstruktor SelectItem kann den Optionswert als erstes Argument und die Optionsbezeichnung als zweites Argument verwenden.

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

    // ... 
} 

Dann können Sie es in der Ansicht wie folgt verwenden:

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

Sie nur eine benutzerdefinierte Converter liefern müssen, die zwischen Trial und String umwandelt. Mehr Details können in this article gefunden werden.


In JSF 2.x können Sie die List<SelectItem> und verwenden Sie das neue var Attribut in f:selectItems statt weglassen:

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

geschaltet sind gerade von JSF1 zu JSF2 und zu lieben das neue var Attribut auf h: selectOneListbox . – scottyab

+0

eine Idee, ob und wie kann ich den Doppelklick auf ein Element behandeln? –

+0

Ich folge, was Sie (BalusC) für JSF 2 getan haben, aber wenn ich das Element in Chrom inspiziere, hat jede meiner Optionen die ganze Liste als Wert. Hier ist mein Code: Java private ConnectedUser connection_to_remove; private Liste connected_users; Auf dem Formular submit möchte ich die 'connection_to_remove' aus der' connected_users' Liste entfernen. JSP: edhedges

0

Sie können so verwenden. Ich bin mir nicht sicher, ob es funktioniert oder nicht, weil ich <ice:selectOneMenu> Tag benutzt habe und es tadellos funktionierte.

<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 (Aktion) Datei

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); 
Verwandte Themen