gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:12 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com