JSF2 enum h: selectOneMenu - PullRequest
       2

JSF2 enum h: selectOneMenu

4 голосов
/ 04 апреля 2011

Я пытаюсь использовать перечисление с полем h: selectOneMenu в проекте JSF2.

Что у меня так далеко:

Enum:

public enum MyType {
  TEST,
  ME;        
}

Фасоль:

@ManagedBean
public class MyBean {
  private MyType type;
  public MyType[] getTypes {
    return MyType.values;
  }
  public void setType(MyType type) {
    this.type = type;
  }
  public MyType getType() {
    return this.type;
  }
}

xhtml page:

<h:selectOneMenu id="mySelection" 
  value="#{myBean.type}">
  <f:selectItems value="#{myBean.types}" />
</h:selectOneMenu>

Моя проблема в том, что значения отображаются правильно, но они не сохраняются (на самом деле я использую это в проекте спящего режима seam3). Когда я попробовал его с помощью специального валидатора, я увидел, что метод setType вызывается дважды, второй раз с нулем ->, в результате чего ничего не сохраняется. Я что-то упустил?

Пока я проверил следующие темы:
* jsf-2-0-use-enum-values-for-selectonemenu
* jsf-2-0-use-enum-in-selectmany-menu
* jsf-best-way-en-enum-internationalization-i18n

Большое спасибо за помощь,
Stephan

1 Ответ

3 голосов
/ 04 апреля 2011

В этом конкретном случае вам вообще не нужно настраивать конвертер. JSF имеет встроенный конвертер перечислений. Настраиваемый конвертер для перечислений обязателен, только если в качестве значения указано List<SomeEnum> вместо SomeEnum. См. Также Использование перечисления в h: selectManyCheckbox .

Помимо двух ошибок компиляции из-за отсутствия скобок в двух методах, размещенный код выглядит нормально и должен работать нормально. Вероятно, ваша проблема вызвана чем-то еще, что вы упустили из вопроса для простоты.

...