问题描述
|
我在SelectOneMenu中有一个列表。
当用户选择此列表之一时,它给了我值,而不是它的标签。
我需要的是将标签显示在屏幕上的标签。有更简单的方法吗?
我现在的工作方式是使用这样的foreach:
for(SelectItem si : listofSomething) {
if (si.getValue().equals(myValue) {
theLabelIs = si.getLabel();
break;
}
}
也许我没有很好地解释它,所以请告诉我,我将尝试更好地解释。
解决方法
请改用
Map
,其中项目值为地图键,项目标签为地图值。
private Map<String,String> options;
public Bean() {
options = new HashMap<String,String>();
options.put(\"value1\",\"label1\");
options.put(\"value2\",\"label2\");
options.put(\"value3\",\"label3\");
// ...
}
然后,可以在后备Bean中获得它,如下所示:
String label = options.get(selectedValue);
// ...
甚至如下图
You have selected <h:outputText value=\"#{bean.options[bean.selectedValue]}\" />