2010-12-07 3 views
1

Мне нужно отобразить окно с меткой как значение «name» & Я использую h: selectOneListbox.Как установить метку в h: selectOneListbox?

Мой код:

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

Мой пробный боб:

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 имеет "имя" свойство & я хочу, чтобы установить его в качестве метки в ListBox. Как это сделать?

ответ

2

В JSF 1.x, вам нужно создать List<SelectItem> на основе вашего List<Trial>. Конструктор SelectItem может принимать значение параметра в качестве 1-го аргумента, а метка опции - как 2-й аргумент.

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

    // ... 
} 

Затем вы можете использовать его в представлении следующим образом:

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

Вам нужно только поставить пользовательский Converter, который преобразует между Trial и String. Более подробную информацию можно найти в this article.


В JSF 2.x, вы можете опустить List<SelectItem> и использовать новый атрибут var в f:selectItems вместо:

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

Просто перешли от JSF1 к JSF2 и любящей новый атрибут уаг на час: selectOneListbox , – scottyab 2011-02-11 11:10:50

0

Вы можете использовать это. Я не уверен, что это сработает или нет, потому что я использовал тег <ice:selectOneMenu>, и он отлично работал.

<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 (Действие) Файл

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