从 @RenderMapping 方法到页面级别的 portlet 级别重定向

portlet level to page level redirection from @RenderMapping method

加载页面时,我需要重定向到控制器级别的另一个页面。 我已经尝试了很多。但是我找不到办法。因此,作为控制器级别的解决方法,我将标志变量放入 'ModelMap' 并在 'JSP' 和 'JS' 级别中读取并使用 javascript.

重定向
window.location   

我觉得这不是更好的方法。 "getConfirmationPage"后面是加载页面时执行的方法。

我也试过了

response.sendRedirect("https://whosebug.com/?p=1"); 

但是那个对我来说也不是很好。

任何人都可以提出最佳做法。 我在我的项目中使用 spring4/liferay 6.2.4/portlet/JSP 作为技术。这是 portlet 相关的问题。

@Controller
@RequestMapping("VIEW")
public class ConfirmationController extends AbstractControllerTemplate {


@RenderMapping
public ModelAndView getConfirmationPage(
        RenderRequest req,
        PortletSession session) {
  ModelMap mm = new ModelMap();
 //conditionally need to redirect to different liferay page not portlet
  return new ModelAndView("confirmation", mm);
}

已编辑 这是我的逻辑 我传入的URL是这样的https://whosebug.com/?p=2但是逻辑上p=2对他来说是无效的。所以我尝试做的是将他重定向到 p=1

https://whosebug.com/?p=1

您可以使用下面的代码行来解决您的问题。变量响应应为 PortletResponse/ResourceResponse.

类型
HttpServletResponse res =PortalUtil.getHttpServletResponse(response)

这里有一个示例代码段来详细说明您的要求。

    try{

            HttpServletResponse res = PortalUtil.getHttpServletResponse(response);
            String url = PortalUtil.getCurrentCompleteURL(PortalUtil.getHttpServletRequest( req ) );
            String param1=getParamValue(url,"p");//logic here to return param from URL

            if(param1!=null && param1.trim().length()>0){
                requestPageNumber=Integer.parseInt(param1);
            }

            if(requestPageNumber<=uiState.getPageNunmber())//valid
            {}
            else//invalid
            {
                res.sendRedirect( "/proposerdetails?p="+uiState.getPageNunmber() );
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

编码愉快!!!!