我在 Liferay 中遇到了一个可能很简单的 Spring Portlet 重定向和 jsp 渲染问题。
我在 Liferay page1和page2中有两个页面和一个带有两个 JSP defaultView.jsp和second.jsp的spring mvc portlet portletA。
page1 和 page2 都实例化了 portletA。
默认情况下,portletA 通过调用@RenderMapping() 方法加载defaultView.jsp。
默认视图控制器:
@RenderMapping
public String renderDefaultView() {
return "defaultView";
}
从 defaultView.jsp 可以通过 http 重定向调用 liferay page2 (@ActionMapping resp.sendRedirect())
默认视图.jsp:
$(nRow).click(function() {
window.location.href = "<portlet:actionURL name='doGotoPage2' />"
});
默认视图控制器:
@ActionMapping("doGotoPage2")
public void doGoToMedicalAid(ActionRequest req,
ActionResponse resp) {
try {
resp.sendRedirect("/group/project/page2");
} catch (IOException ex) {
Logger.getLogger(DefaultViewController.class.getName()).log(Level.SEVERE, null, ex);
}
}
现在我想知道
从 page1 重定向后,如何告诉 portletA 在 page2 上调用不同的 @RenderMapping 方法?
我希望 portletA 在 page2 上呈现 second.jsp:
@RenderMapping(value = "renderSecondPage")
public String renderSecondPage() {
return "second";
}
据我了解,我无法在发送重定向之前或之后的动作阶段设置渲染参数!
例如,这不起作用并导致java.lang.IllegalStateException: Set render parameter has been called
resp.sendRedirect("/group/project/page2");
resp.setRenderParameter("render", "renderSecondPage");
非常感谢你的帮助!