我必须显示一个列表框,其标签为值“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的标签。 我该怎么做?
答案 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
即可在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 :(得分: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);