Тогда просто используйте метку в качестве значения. Вместо этого используйте конструктор SelectItem
с одним аргументом:
new SelectItem("label");
Таким образом, метка будет использоваться и как значение элемента, и как метка элемента.
Обновление вы, похоже, неправильно сформулировали вопрос, и на самом деле хотите получить и то, и другое. В этом случае, просто удерживайте Map
пар значений ID-метки самостоятельно и получите метку с карты по выбранному идентификатору.
private Map<Long, String> themaIdsAndLabels = new HashMap<Long, String>();
// ...
public void submit() {
String themaLabel = themaIdsAndLabels.get(thema);
// ...
}
Вы можете использовать этот Map
для создания списка SelectItem
и более, если вы используете JSF 2.0 и EL 2.2, вы также можете использовать эту карту прямо внутри <f:selectItems>
без необходимости копировать ее в List<SelectItem>
.
<f:selectItems value="#{bean.themaIdsAndLabels.entrySet()}" var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}" />
Или, если ваше единственное намерение состоит в том, чтобы снова отобразить метку в выходном тексте, вы также можете просто использовать
<h:outputText value="#{bean.themaIdsAndLabels[bean.thema]}" />