java-使用ActionMapping重定向到另一个portlet
作者:互联网
我正在使用Liferay和Spring MVC,并且我想重定向到另一个portlet并将参数传递给它,但是当我尝试设置渲染参数时出现此错误:
15:20:24,859 ERROR [portal-web.docroot.html.portal.render_portlet_jsp] (http-foo-10.23.243.3-8080-7) java.lang.IllegalStateException: Set render parameter has already been called
at com.liferay.portlet.ActionResponseImpl.sendRedirect(ActionResponseImpl.java:48)
at sk.foo.showcasePortlet.ShowcaseController.redirect(ShowcaseController.java:65)
正在解决的showcaseController的方法仅包含分配和重定向:
@ActionMapping(params = { "action=redirect" })
public void redirect(ActionRequest request, ActionResponse response)
throws IOException {
response.setRenderParameter("path", request.getParameter("path"));
response.sendRedirect("/path/to/portlet");
}
为什么不能分配该参数?当我删除该行时,重定向有效,但是问题是用户被重定向到的portlet期望一个字符串参数“ path”:
@RenderMapping
public String barBaz(RenderRequest request, @RequestParam String path){
// ...
return "some/jsp";
}
请问如何在另一个portlet中将参数传递给barBaz方法?
解决方法:
您异常地说,此IllegalStateException:设置渲染参数已被调用
请注意,此拦截器正在ActionResponse上调用setRenderParameter,这意味着使用此拦截器时无法在处理程序中调用sendRedirect.如果您需要进行外部重定向,则需要手动转发映射参数或编写其他拦截器来为您处理
标签:portlet,response-redirect,spring,java,spring-mvc 来源: https://codeday.me/bug/20191122/2059998.html