Redirect actionforward的重定向属性在基于struts portlet桥的portlet(JSR-168)中不起作用

Redirect actionforward的重定向属性在基于struts portlet桥的portlet(JSR-168)中不起作用,redirect,struts,portlet,Redirect,Struts,Portlet,我对这件事做了很多研究,但似乎找不到我问题的答案,所以我希望你们能帮助我 我们有一个struts 1.2.7 web应用程序,我们使用ApacheStruts portlet桥将其转换为JSR-168 portlet 这一切都很好,除了一件事:指定重定向的actionforwards实际上并没有重定向到指定的操作。当应用程序作为普通struts web应用程序运行时,这些重定向确实有效。因此,在portlet变量中存在双重提交问题 我们使用动作链接,以动作转发到互动程序定义结束。例如: <

我对这件事做了很多研究,但似乎找不到我问题的答案,所以我希望你们能帮助我

我们有一个struts 1.2.7 web应用程序,我们使用ApacheStruts portlet桥将其转换为JSR-168 portlet

这一切都很好,除了一件事:指定重定向的actionforwards实际上并没有重定向到指定的操作。当应用程序作为普通struts web应用程序运行时,这些重定向确实有效。因此,在portlet变量中存在双重提交问题

我们使用动作链接,以动作转发到互动程序定义结束。例如:

<action path="/CreateIdmAccountSubmit"  validate="true"   input="catalog.createaccount.page" type="com.konakart.actions.login.CreateIdmAccountSubmitAction" name="CreateIdmAccountForm">
        <forward name="FillRegistrationData" path="/FillRegistrationData.do" redirect="true"/>
    </action>

<action path="/FillRegistrationData" validate="false" type="com.konakart.actions.registration.FillRegistrationDataAction" name="FillRegistrationDataForm">
        <forward name="FillRegistrationDataPage" path="/FillRegistrationDataPage.do" redirect="false"/>
    </action>

<action path="/FillRegistrationDataPage" forward="order.registrationdata.page"/> (tiles-def)

(tiles def)
在本例中,action/CreateIdmAccountSubmit处理提交的表单(POST)并在db中创建帐户。成功创建后,用户将被重定向到另一个操作(/FillRegistrationData),该操作初始化订单对象,然后转到orderregistration页面,该页面的布局在tiles-defs.xml中定义

正如我所说的,从功能的角度来看,这一切都很好,但是当用户点击呈现订单注册页面上的f5时,会再次调用action/CreateIdmAccountSubmit,从而创建双重帐户。正如我所说的,在将应用程序作为普通web应用程序运行时,也不会发生这种情况。在这里,该机制可以完美地工作:)

我认为这个问题是由重定向在错误的阶段完成这一事实造成的,但我真的不确定这为什么不起作用:)

根据我读到的内容,我尝试了Fowlowing方法来解决重定向问题: *指定表单在struts-portlet-config.xml中作为“actionUrl”提交的操作(希望重定向是在错误的阶段完成的?) *用strutsportlet变量替换了普通的html标记库(希望我的html:form生成了一个有效的url-actionUrl,以某种方式使重定向成为可能?)

这两个步骤似乎没有帮助,我不知道如何在portlet中完成一个简单的重定向,以防止双重提交问题


希望你们能帮助我

我找到了答案:机制取决于门户实现。我们使用Liferay,默认情况下它不支持重定向

但是,您可以通过在liferay-portlet.xml中声明一个名为

<action-url-redirect>true</action-url-redirect>
true
这为我们解决了问题