在 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.
中正确配置过滤器
我在 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.
中正确配置过滤器