我正在使用带有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参数调用该方法是正常的,还是我以错误的方式初始化某些东西。
答案 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>