当从语言portlet更改语言时,用户被重定向到最后一个URL。如果URL对应于actionRequest,则该操作将被第二次触发。
我尝试了以下简单的代码,与经典的主题,在liferay 6.1 GA2
view.jsp:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects />
<portlet:actionURL name="myProcessAction" var="myProcessActionURL" />
<a href="<%= myProcessActionURL %>">my process action</a>
<form action="<%= myProcessActionURL %>" method="post">
<input type="submit" />
</form>
testportlet.java:
public class TestPortlet extends MVCPortlet {
public void myProcessAction(ActionRequest actionRequest,
ActionResponse actionResponse) throws IOException, PortletException {
_log.info("processing action");
}
private static Log _log = LogFactoryUtil.getLog("TestPortlet");
}
我将测试portlet以及语言portlet添加到一个新页面。
提交表单->日志显示"处理动作"切换语言->日志再次显示"处理操作"!
最诚挚的问候,阿兰
您可以通过包含"redirect"参数来指定页面的重定向位置。例如:
<input type="hidden" name="<portlet:namespace />redirect" value="/" />
如果请求成功,MVCPortlet
类将自动看到此参数并重定向到它。