在 h:commandButton 操作之前调用 Seam 页面操作

Seam pages action is called before the h:commandButton action

我在 updatePerson.xhtml 中有这个 h:commandButton 来更新个人信息,但是当我点击它时,页面操作方法 (controller.preUpdatePerson) 被调用,就好像我正在进入这个再次翻页。这次调用 pages 操作让我更加迷茫,因为此时 controller.preUpdatePerson 内的对象为空,然后它就停在这里。

controller.update 永远不会被调用。 我不知道为什么会这样。所有实体和控制器都在会话范围内。我尝试了很多组合,但似乎不是交易问题。那么这里发生了什么?

系统规格:Seam 2.2.2 JSF 1.2

pages.xml:

    <page view-id="/updatePerson.xhtml">
        <action execute="#{controller.preUpdatePerson}" on-postback="false" />
        <begin-conversation join="true" flush-mode="manual"/>

张updatePerson.xhtml:

<a4j:form id="editPerson" styleClass="inline" enctype="multipart/form-data">
<h:commandButton id="editPerson" value="#{messages['button.save']}" 
                    action="#{controller.update}"/>
...

基于这个答案commandButton/commandLink/ajax action/listener method not invoked or input value not updated 我的问题与 enctype="multipart/form-data" 有关,因为页面提交要上传的文件。 我必须在 web.xml.

中正确配置过滤器