0

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

在第一个 JSPpage A中,当我单击方法上的 Submit 按钮时,Page AprocessAction()方法执行操作并出现一个 JSP page B

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

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

4

2 回答 2

1

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

<init-param>
   <name>wps.multiple.action.execution</name>
   <value>true</value>
</init-param>
于 2011-06-30T09:33:59.430 回答
0

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

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

于 2011-06-27T03:12:58.570 回答