java - 使用 ActionMapping 重定向到另一个 portlet

标签 java spring spring-mvc portlet response.redirect

我正在使用 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 需要一个字符串参数“路径”:

@RenderMapping
public String barBaz(RenderRequest request, @RequestParam String path){
    // ...
    return "some/jsp";
}

请问如何将参数传递给另一个 portlet 中的 barBaz 方法?

最佳答案

你的异常说这个IllegalStateException: Set render parameter has already been called

请注意,此拦截器正在调用 ActionResponse 上的 setRenderParameter,这意味着您无法在使用此拦截器时在处理程序中调用 sendRedirect。如果您需要进行外部重定向,那么您要么需要手动转发映射参数,要么编写一个不同的拦截器来为您处理此问题

DOC

关于java - 使用 ActionMapping 重定向到另一个 portlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20098567/

相关文章:

java - 如何在 POST 请求中向其他 Feign 客户端发出 GET 请求?

java - Cron 表达式在该月的最后一天不起作用

scala - Scala Play 2.4 推荐的授权框架

java - 无法绑定(bind)属性

spring - 如何从 Spring MVC 中的页面标题创建 RESTful URL?

java局部变量不可用

java使用hibernate SQLQuery获取多个列

java - 生成 Javaassist 运行时 POJO 时出现异常

java - Spring 启动: Count Page Views - Actuators

java - 使用 valueOf 枚举的字符串与 java.lang.IllegalArgumentException 崩溃