在列表中查找对象

时间:2011-05-25 13:00:04

标签: java list jsf

我在SelectOneMenu中有一个List。 当用户选择此列表中的一个时,它会给我值,而不是它的标签。 我需要的是标签在屏幕上显示。有没有更简单的方法呢?

我现在正在做的事情是这样的一个foreach:

for(SelectItem si : listOfSomething) {
 if (si.getValue().equals(myValue) {
  theLabelIs = si.getLabel();
  break;
 }
}

也许我没有解释清楚,所以请告诉我,我会尝试更好地解释。

1 个答案:

答案 0 :(得分:2)

使用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]}" />