在jsf 1.2中使用h:selectOneRadioButton时出现IllegalArgumentException

时间:2013-03-29 15:13:10

标签: jsf-1.2

我有以下JSF 1.2应用程序xhtml文件的facelet代码:

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

userBean.myBooleanValues方法将select Item返回为:new SelectItem(Boolean.TRUE,“Yes”)和类似的“NO”

cdM.val的类型为:Object val;

当在UI上呈现上面的无线电组件时,我得到以下异常。 java.lang.IllegalArgumentException:Value is no String(class = java.lang.Boolean,value = true)and component form0:with path:.......没有Converter。

最奇怪的是,当jsf facelet jar版本为:jsf-facelets-1.1.14.jar时,上述异常消失。 (并显示为jsf-facelets-1.1.11.jar)。

我是否需要将任何转换器编写为deel,但异常

1 个答案:

答案 0 :(得分:1)

经过大量搜索后,我解决了以下问题:

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

其中cdM.val包含值:“是”或“否”。 转换器用于在String(cdM.val)和Boolean(userBean.myBooleanValues)之间转换值。

异常得到解决。