В getAsObject arg2 передается как ноль - PullRequest
1 голос
/ 12 октября 2011

Я использую 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>

. В случае какого-либо события на странице вызывается getAsObject преобразователя, определенного как String. Arg2 равен нулю.Мне интересно, это нормально, что метод вызывается с нулевым аргументом или я что-то инициализирую неправильно.

1 Ответ

1 голос
/ 12 октября 2011

Этого не произошло в JSF 1.x, но это произойдет в JSF 2.x.Это делается, в частности, для правильной поддержки оценки бобов, такой как @NotNull.Прежде чем пройти проверку bean-компонента, JSF по спецификации должен сначала преобразовать его.Вам просто нужно добавить нулевую проверку и вернуть null или что-то еще.

Следующий параметр контекста в web.xml отключит его, но таким образом вы больше не сможете использовать @NotNull:

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