在后退按钮之后,portlet不会进入processaction

时间:2011-06-23 14:51:39

标签: java jsp portlet websphere-portal

我有一个涉及显示多个JSP页面的portlet。

在第一个JSP page A中,当我点击Page A上的“提交”按钮时,processAction()方法将采取措施并显示JSP page B

现在,如果我使用Web浏览器的后退按钮page A并再次单击“提交”按钮, JSP page B出现但我注意到processAction()没有采取任何行动。 (通常在JSP页面中单击“提交”按钮可以导致processAction()采取措施。)

任何人都可以帮忙解决这个问题吗?在我的Porlet中,它必须转到进程动作,但它不会在后退按钮之后。

2 个答案:

答案 0 :(得分:1)

这是默认行为。 Portal默认启用“Multiple Action URL Protection”。加载页面时,会创建一个操作链接,该链接包含action ID。不能在同一会话中再次使用相同的操作ID。因此,当您单击“后退”按钮时,如果从历史记录缓存中加载页面,则表单将包含之前使用的相同操作链接。所以portal简单地重新加载页面,而不是调用processAction()。 您可以通过在portlet.xml文件中为portlet添加以下配置来禁用此功能。

<init-param>
   <name>wps.multiple.action.execution</name>
   <value>true</value>
</init-param>

答案 1 :(得分:0)

没有看到任何代码,听起来好像您的表单响应可能会被缓存。您<form>的方法属性是什么?通过GET(或根本没有method属性)提交的表单可以被缓存;在这种情况下,服务器和portlet的processAction(...)都不会被调用 - 浏览器将重新呈现缓存中的先前响应。

如果您发布一些代码,可能会有更多优惠可供帮助......