我有一个涉及显示多个JSP页面的portlet。
在第一个JSP page A
中,当我点击Page A
上的“提交”按钮时,processAction()
方法将采取措施并显示JSP page B
。
现在,如果我使用Web浏览器的后退按钮到page A
并再次单击“提交”按钮,
JSP page B
出现但我注意到processAction()
没有采取任何行动。 (通常在JSP页面中单击“提交”按钮可以导致processAction()
采取措施。)
任何人都可以帮忙解决这个问题吗?在我的Porlet中,它必须转到进程动作,但它不会在后退按钮之后。
答案 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(...)
都不会被调用 - 浏览器将重新呈现缓存中的先前响应。
如果您发布一些代码,可能会有更多优惠可供帮助......