在getAsObject中,arg2作为null传递

时间:2011-10-12 09:02:03

标签: java jsf-2 converter

我正在使用带有tomcat 7的JSF2.0,并且我在页面中定义了几个selectOneListBox。这些最初被分配给空的ArrayLists,如下所示

<h:selectOneListbox value="#{memberBean.currentAvailable}" converter="memberConverter" 
                            size="10" style="width:150px;">
            <f:selectItems value="#{memberBean.availableMembers}" var="member"
                             itemValue="#{member}" itemLabel="#   {member.fname} #{member.lname}" />
        </h:selectOneListbox>
        <h:panelGrid>
            <a4j:commandButton value="Add" render="groupMessage_Page" listner="#{memberBean.moveAvaiableMember}"/>
            <a4j:commandButton value="Remove" render="groupMessage_Page" listner="#{memberBean.moveSelectedMember}"/>
        </h:panelGrid>
        <h:selectOneListbox value="#{memberBean.currentSelected}" converter="memberConverter"
                            size="10" style="width:150px;">
            <f:selectItems value="#{memberBean.selectedMembers}" var="member"
                        itemValue="#{member}" itemLabel="#{member.fname} #{member.lname}" />
        </h:selectOneListbox>

如果页面上有任何事件,则调用getAsObject,定义为String arg2为null。我想知道使用null参数调用该方法是正常的,还是我以错误的方式初始化某些东西。

1 个答案:

答案 0 :(得分:1)

这在JSF 1.x中没有发生,但这将在JSF 2.x中发生。这是为了正确支持诸如@NotNull之类的bean值。在通过bean验证之前,JSF首先通过规范来转换它。您只需添加一个nullcheck并返回null或其他内容。

web.xml中的以下上下文参数会将其禁用,但这样您将无法再使用@NotNull

<context-param>
    <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
    <param-value>false</param-value>
</context-param>