从 @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();
}
编码愉快!!!!
加载页面时,我需要重定向到控制器级别的另一个页面。 我已经尝试了很多。但是我找不到办法。因此,作为控制器级别的解决方法,我将标志变量放入 '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();
}
编码愉快!!!!