如何在h:selectOneListbox中设置标签?

时间:2010-12-07 06:49:29

标签: jsf listbox label

我必须显示一个列表框,其标签为值“name”&我正在使用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有一个属性“name”&amp;我想将其设置为ListBox的标签。 我该怎么做?

2 个答案:

答案 0 :(得分:2)

在JSF 1.x中,您需要根据List<SelectItem>创建List<Trial>SelectItem的构造函数可以将选项值作为第一个参数,将选项标签作为第二个参数。

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即可在TrialString之间进行转换。更多细节可以在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 :(得分: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(Action)文件

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