在 jsf f:selectItems 中打印两个单独的数组作为 itemLabel 和值?
Printing two seperate arrays as itemLabel and value in jsf f:selectItems?
我的 h:selectOneMenu 和 f:selectItems
有问题
我希望从我的名为 list
的数字数组中获取 "value"
private double list = {51.1511, 53.51351, 0.634343, 2.52555}
并且每个值的标签都是
private String curr = {PYN, DKT, ALT, BIT}
目前我在做
<h:selectOneMenu value="#{serviceBean.select2}">
<f:selectItems value="#{serviceBean.list}" itemLabel="#{serviceBean.curr}" />
</h:selectOneMenu>
这可以给我数值作为数字,但它没有向我显示项目标签内的字符串,而是显示内存引用。我如何让它显示字符串?
您应该使用托管 bean 来访问表示层中包含的模型。
托管 bean:
@Named
@SessionScoped
public class MyBean
{
private final List<Double> values = Arrays.asList( 1.1, 2.1, 3.1 );
private final List<String> labels = Arrays.asList( "AAA", "BBB", "CCC" );
private Double selectedItem;
public List<String> getItems()
{
return labels;
}
public Double getValueAt( int ndx_ )
{
return values.get( ndx_ );
}
public String getLabelAt( int ndx_ )
{
return labels.get( ndx_ );
}
public Double getSelectedItem()
{
return selectedItem;
}
public void setSelectedItem( Double selectedItem_ )
{
selectedItem = selectedItem_;
}
}
JSF facelet:
<h:selectOneMenu value="#{myBean.selectedItem}">
<c:forEach items="#{myBean.items}" var="item" varStatus="itemIndex">
<f:selectItem itemValue="#{myBean.getValueAt( itemIndex.index ) }" itemLabel="#{myBean.getLabelAt( itemIndex.index )}"/>
</c:forEach>
</h:selectOneMenu>
public class General{
private double listValue;
private String curValue;
public General(String curValue, double listValue){
this.listValue = listValue;
this.curValue = curValue;
}
public double getListValue(){ return listValue;}
public String getCurValue(){ return curValue;}
}
我假设您生成了对象并创建了数组列表 ArrayList<General> myvalues
ArrayList<General> myvalues = new ArrayList<>();
myvlues.add(new General("PYN",51.112));
...
<h:selectOneMenu value="#{serviceBean.selectedItem}">
<f:selectItems value="#{serviceBean.myvalues}"
var="myvalue"
itemValue="#{myvalue.listValue}"
itemLabel="#{myvalue.curValue}"/>
</h:selectOneMen>
我的 h:selectOneMenu 和 f:selectItems
有问题我希望从我的名为 list
的数字数组中获取 "value"private double list = {51.1511, 53.51351, 0.634343, 2.52555}
并且每个值的标签都是
private String curr = {PYN, DKT, ALT, BIT}
目前我在做
<h:selectOneMenu value="#{serviceBean.select2}">
<f:selectItems value="#{serviceBean.list}" itemLabel="#{serviceBean.curr}" />
</h:selectOneMenu>
这可以给我数值作为数字,但它没有向我显示项目标签内的字符串,而是显示内存引用。我如何让它显示字符串?
您应该使用托管 bean 来访问表示层中包含的模型。
托管 bean:
@Named
@SessionScoped
public class MyBean
{
private final List<Double> values = Arrays.asList( 1.1, 2.1, 3.1 );
private final List<String> labels = Arrays.asList( "AAA", "BBB", "CCC" );
private Double selectedItem;
public List<String> getItems()
{
return labels;
}
public Double getValueAt( int ndx_ )
{
return values.get( ndx_ );
}
public String getLabelAt( int ndx_ )
{
return labels.get( ndx_ );
}
public Double getSelectedItem()
{
return selectedItem;
}
public void setSelectedItem( Double selectedItem_ )
{
selectedItem = selectedItem_;
}
}
JSF facelet:
<h:selectOneMenu value="#{myBean.selectedItem}">
<c:forEach items="#{myBean.items}" var="item" varStatus="itemIndex">
<f:selectItem itemValue="#{myBean.getValueAt( itemIndex.index ) }" itemLabel="#{myBean.getLabelAt( itemIndex.index )}"/>
</c:forEach>
</h:selectOneMenu>
public class General{
private double listValue;
private String curValue;
public General(String curValue, double listValue){
this.listValue = listValue;
this.curValue = curValue;
}
public double getListValue(){ return listValue;}
public String getCurValue(){ return curValue;}
}
我假设您生成了对象并创建了数组列表 ArrayList<General> myvalues
ArrayList<General> myvalues = new ArrayList<>();
myvlues.add(new General("PYN",51.112));
...
<h:selectOneMenu value="#{serviceBean.selectedItem}">
<f:selectItems value="#{serviceBean.myvalues}"
var="myvalue"
itemValue="#{myvalue.listValue}"
itemLabel="#{myvalue.curValue}"/>
</h:selectOneMen>