IllegalArgumentException при использовании h: selectOneRadioButton в jsf 1.2

У меня есть следующий код Facelet для файла xhtml приложения JSF 1.2:

<h:selectOneRadio value="#{cdM.val}"> 
       <f:selectItems value="#{userBean.myBooleanValues}" />      
</h:selectOneRadio>

Метод userBean.myBooleanValues ​​возвращает элемент выбора как: new SelectItem(Boolean.TRUE, «Да») и аналогичный для «НЕТ»

cdM.val имеет тип: Object val;

Я получаю исключение ниже, когда вышеуказанный радиокомпонент отображается в пользовательском интерфейсе. java.lang.IllegalArgumentException:Value is no String (class=java.lang.Boolean, value=true) и компонент form0: с путем: ....... не имеет преобразователя.

Самая странная часть заключается в том, что указанное выше исключение исчезает, когда версия jsf facelet jar имеет вид: jsf-facelets-1.1.14.jar. (и появляется для jsf-facelets-1.1.11.jar).

Нужно ли мне писать какой-либо преобразователь в deel за исключением


person Atul    schedule 29.03.2013    source источник


Ответы (1)


После долгих поисков я решил следующую проблему:

<h:selectOneRadio value="#{cdM.val} converter="javax.faces.Boolean"> 
       <f:selectItems value="#{userBean.myBooleanValues}" />      
</h:selectOneRadio>

где cdM.val содержит значения: «Да» или «Нет». Преобразователь используется для преобразования значений между строковыми (cdM.val) и логическими значениями (userBean.myBooleanValues).

Исключение было разрешено.

person Atul    schedule 30.03.2013