【问题标题】:In getAsObject arg2 is passed as null在 getAsObject 中,arg2 作为 null 传递
【发布时间】:2011-12-05 23:03:24
【问题描述】:

我将 JSF2.0 与 tomcat 7 一起使用,并且在我的页面中定义了几个 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>

如果页面上发生任何事件,则调用定义为 String arg2 为 null 的转换器的 getAsObject。我想知道使用 null 参数调用该方法是否正常,或者我是否以错误的方式初始化某些内容。

【问题讨论】:

    标签: java jsf-2 converter


    【解决方案1】:

    这在 JSF 1.x 中没有发生,但在 JSF 2.x 中会发生。这样做是为了正确支持 bean valiation,例如 @NotNull。在通过 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>
    

    【讨论】:

    • 感谢 BalusC 的回复。当我尝试使用 nullCheck 时,nullcheck 并没有解决问题。在这种情况下,我认为请求响应周期没有完成,并且 commandButton 没有完成它的动作。如果我在 bean 中创建 SelectItems 并将其用于 h:selectItems 则一切正常,getAsObject 中没有 null。
    • 嗯?那你怎么做空检查呢?它应该像if (value == null) return null; 一样简单。
    • 放在 web.xml 中也无济于事。我仍然得到 arg2=null
    • 进行空检查确实可以解决问题。但是 似乎没有效果。谢谢 BalusC。
    猜你喜欢
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    相关资源
    最近更新 更多