我正在尝试使用java代码重定向到其他页面,并且不知道为什么它没有被重定向。 以下是以下代码
ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
PortletConfig portletConfig = (PortletConfig) actionRequest.getAttribute("javax.portlet.config");
String portletName = portletConfig.getPortletName();
PortletURL successPageURL = PortletURLFactoryUtil.create(
actionRequest, portletName+ "_WAR_" + portletName + "portlet",
themeDisplay.getPlid(), PortletRequest.RENDER_PHASE);
successPageURL.setParameter("jspPage", LibraryConstants.PAGE_SUCCESS);
actionResponse.sendRedirect(successPageURL.toString());
它没有重定向到页面。请帮助检查代码是否正确。
感谢。
答案 0 :(得分:5)
它没有重定向的问题,因为我们必须在liferay-portlet.xml中添加一个标签 那个标签是
<action-url-redirect>true</action-url-redirect>
在上面的线之后它起作用了。
答案 1 :(得分:4)
我假设此代码采用操作方法或processAction
方法。
最好不要直接从动作阶段重定向,而是使用actionResponse.sendRenderParameter("jspPage", LibraryConstants.PAGE_SUCCESS)
设置jspPage
通过render
或doView
方法进行渲染。
另外,检查sendRedirect
documentation会有所帮助,其中提到它在某些情况下不会重定向。
另外,请检查代码执行时是否收到任何错误或警告。
答案 2 :(得分:3)
使用该代码,您不会重定向到另一个页面,您只需要提供另一个portlet的ID - 您无需知道要转发到哪个页面。
我没有在周末快速检查的环境(对不起),您可以尝试自己找到解决方案:
我希望这可以帮助您自己找到解决方案,因为我在这台计算机上没有可用的IDE来提供示例代码。
答案 3 :(得分:0)
您需要先找到该网页的网址。您可以从友好的URL(friendlyURL
)获取它:
ThemeDisplay theme = (ThemeDisplay) getPortletRequest().getAttribute(WebKeys.THEME_DISPLAY);
final long GROUP_ID = theme.getLayout().getGroupId();
Layout destinationLayout = LayoutLocalServiceUtil.getFriendlyURLLayout(GROUP_ID, false, friendlyUrl);
Layout layout = LayoutLocalServiceUtil.getLayout(destinationLayout.getPlid());
String completeUrl = PortalUtil.getLayoutFullURL(layout, getThemeDisplay());