在列表中查找对象

问题描述

| 我在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]}\" />