1

カレンダー ポートレットのアクションの 1 つをオーバーライドしています。いくつかの機能を実行してから、その後別の JSP にリダイレクトしたいと考えています。次のように sendRedirect 関数を使用してみました:
1.

String redirect = ParamUtil.getString(actionRequest , "redirect");
actionResponse.sendRedirect(redirect);

2.

actionResponse.sendRedirect ("/calendar/view") ;

3.

ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
PortletURL url = PortletURLFactoryUtil.create(PortalUtil.getHttpServletRequest(actionRequest), "8", themeDisplay.getPlid(),
PortletRequest.RENDER_PHASE);
url.setParameter("struts_action", "/calendar/view");
actionResponse.sendRedirect (url.toString()) ;

ただし、いずれのメソッドも jsp を別のメソッドにリダイレクトしません。私は processAction 関数でこれを行っており、BaseStrutsPortletAction を拡張しています。

それを解決する方法はありますか?

これは私のオーバーライドされたファイルです:

public class TestAction extends BaseStrutsPortletAction {
public void processAction(StrutsPortletAction originalStrutsPortletAction, PortletConfig portletConfig,
      ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {
    String cmdConstants = ParamUtil.getString(actionRequest, Constants.CMD);
    if (cmdConstants.equals(Constants.APPROVE)) {
        //some function
        actionResponse.setRenderParameter("test", "test");
        originalStrutsPortletAction.processAction(portletConfig, actionRequest, actionResponse);
    }
  }

  public String render(StrutsPortletAction originalStrutsPortletAction, PortletConfig portletConfig, RenderRequest renderRequest,
      RenderResponse renderResponse) throws Exception {
    String cmdConstants = ParamUtil.getString(renderRequest, Constants.CMD);
    if (cmdConstants.equals(Constants.APPROVE)) {
      if (renderRequest.getParameter("test").equals("test")) {
        return "/portlet/calendar/view.jsp";
      }
    }
    return originalStrutsPortletAction.render(null, portletConfig, renderRequest, renderResponse);
  }
}
4

0 に答える 0