Использовать перечисление в h: selectManyCheckbox

Я хочу использовать значения enum в . Флажки заполняются правильно, однако при выборе некоторых значений и их отправке их тип во время выполнения - String , а не enum. Мой код:

<h:selectManyCheckbox value="#{userController.roles}" layout="pageDirection">
     <f:selectItems value="#{userController.rolesSelectMany}" />
</h:selectManyCheckbox>

Класс UserController (SecurityRole - это перечисляемый тип):

public SelectItem[] getRolesSelectMany() {
    SelectItem[] items = new SelectItem[SecurityRole.values().length];

    int i = 0;
    for (SecurityRole role : SecurityRole.values()) {
        items[i++] = new SelectItem(role, role.toString());
    }
    return items;
}     

public List<SecurityRole> getRoles() {
     getCurrent().getRoles();
}

public void setRoles(List<SecurityRole> roles) {
     getCurrent().setRoles(roles);
}

Когда JSF вызывает метод setRoles, он содержит список типа String, а не типа enum. Любые идеи? Спасибо!

20
задан BalusC 18 June 2014 в 09:15
поделиться