У меня проблема с одним из моих SelectOneMenu в JSF.
У меня есть компонент SelectOneMenu, связанный со списком перечислений, а значение, присвоенное selectOneMenu, является элементом массива, подобным этому:
<h:selectOneMenu id = "menuOperatorOne" value = "#{operandExpression.operators[0]}">
<f:selectItem itemValue = "#{null}" itemLabel = " -- Select "></f:selectItem>
<f:selectItems value = "#{currentBean.listComparaisonOperators}"/>
<f:ajax render = "expressionForm"/>
</h:selectOneMenu>
Проблема в том, что возвращается только String (имя Enum как String, а не сам объект).
Я знаю, что код работает хорошо, если я устанавливаю значение selectOneMenu на простую переменную моего Enum Type в моем managedBean, например:
<h:selectOneMenu id = "menuOperatorOne" value = "#{currentBean.myEnumObject}">
Итак, в моем смысле все мои перечисления хороши и не являются источником проблемы.
Как я могу получить перечисление объектов в элементе массива?
Спасибо за вашу помощь !
ИЗМЕНИТЬ после дублирования предложения:
Говоря, что у нас есть две bean-переменные, такие как;
private EnumType singleEnumObject;
private List<EnumType> listEnumObjects;
и у нас есть два selectOneMenu в подобном JSf (listComparaisonOperators содержит мои значения Enum);
<h:selectOneMenu id = "menuOperatorOne" value = "#{currentBean.singleEnumObject}">
<f:selectItems value = "#{currentBean.listComparaisonOperators}"/>
</h:selectOneMenu>
<h:selectOneMenu id = "menuOperatorTwo" value = "#{currentBean.listEnumObjects[0]}">
<f:selectItems value = "#{currentBean.listComparaisonOperators}"/>
</h:selectOneMenu>
Как видите, они практически идентичны, только второй связан с массивом элементов как значение. Но у каждого из них есть Enum в selectItems и одинаковая обработка.
первый selectOneMenu вернет Enum Object в «singleEnumObject», и это хорошо.
второй selectOneMenu вернет Нить в «listEnumObjects [0]» (имя перечисления в виде строки). Разве я не должен получить свой объект Enum, как первый SelectOneMenu?
Кто-нибудь знает, что я здесь делаю не так? Может ли кто-нибудь предоставить мне пример, в котором он извлекает объект Enum, используя элемент массива в значении SelectOneMenu (а не одну переменную)?
Спасибо.
Да, у меня нет проблем с возвратом объекта Enum, если значение, присвоенное SelectOneMenu, является «простой» переменной. Моя проблема возникает только тогда, когда значение является элементом массива.
Возможный дубликат Как использовать значения перечисления в f: selectItem (s)



в вашем классе контроллера (CurrentBean) добавьте объект Enum с помощью средства получения и установки и создайте метод получения, который будет возвращать объекты Enum. как следует
private EnumObject enumObject;
// generate getter and setter for enumObject
public EnumObject[] getMyEnums {
return EnumObject.values();
}
На странице просмотра используйте следующие
<h:selectOneMenu id = "menuOperatorOne" value = "#{operandExpression.enumObject}">
<f:selectItems value = "#{currentBean.myEnums}"/>
</h:selectOneMenu>
Надеюсь, это решит вашу проблему. :)
Привет спасибо за ответ Я правильно получаю свои перечисления в моем SelectOneMenu, так что это не моя проблема. Дело в том, что если я установлю значение простой переменной, как вы, то все будет нормально. Если я установил значение для элемента массива типов EnumObject, это не сработает :(
Разве это не то же самое, что указано в ссылке, опубликованной в комментарии под вопросом
Вы читали stackoverflow.com/questions/8229638/…?