Jsf 2 h:SelectOne带有布尔项的菜单不';不能使用空值

Jsf 2 h:SelectOne带有布尔项的菜单不';不能使用空值,jsf-2,boolean,el,selectonemenu,Jsf 2,Boolean,El,Selectonemenu,我正在使用JSF2.0、JBoss7.1.1 Final,selectOneMenu有以下问题。我希望能够将托管bean中的字段设置为true/false/null。因此,我创建了以下selectOneMenu: <h:selectOneMenu value="#{personList.criteria.registrationComplete}" > <f:selectItem itemValue="#{null}" itemLabel="Any.." />

我正在使用JSF2.0、JBoss7.1.1 Final,selectOneMenu有以下问题。我希望能够将托管bean中的字段设置为true/false/null。因此,我创建了以下selectOneMenu:

<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
    <f:selectItem itemValue="#{null}" itemLabel="Any.." />
    <f:selectItem itemValue="true" itemLabel="Yes"/>
    <f:selectItem itemValue="false" itemLabel="No"/>
</h:selectOneMenu>
value参数为null,targetClass为布尔值。然后,此强制类型方法返回false


有没有办法解决这个问题?谢谢

这是Tomcat和JBoss使用的Apache EL解析器的典型特征。众所周知,在EL中强制
null
值时,无法区分原语及其包装对象表示。包装器类型始终被视为基本类型。例如,它在玻璃鱼身上效果很好

您可以通过向服务器启动脚本添加以下VM参数来关闭此Apache EL解析器行为:

-Dorg.apache.el.parser.concure\u TO\u ZERO=false

setRegistrationComplete()方法的签名是什么?争论的类型是什么?布尔值还是布尔值?@prageeth:OP明确说明
Boolean
@prageeth它是公共的void setRegistrationComplete(布尔值registrationComplete)。现场注册已完成Boolean@BalusC:太好了!谢谢你的解决方案有效
 <h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
    <f:selectItem itemValue="#{null}" itemLabel="Any.." />
    <f:selectItem itemValue="#{true}" itemLabel="Yes"/>
    <f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneMenu>
<converter>  
    <converter-id>booleanConverter</converter-id>  
    <converter-class>javax.faces.convert.BooleanConverter</converter-class>  
</converter>
<h:selectOneMenu value="#{personList.criteria.registrationComplete}" >
    <f:selectItem itemValue="#{null}" itemLabel="Any.." />
    <f:selectItem itemValue="true" itemLabel="Yes"/>
    <f:selectItem itemValue="false" itemLabel="No"/>
        <f:converter converterId="booleanConverter"/>
</h:selectOneMenu>
ELSupport.coerceToType(value, targetClass)