0

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());

ページにリダイレクトされません。コードが正しいかどうかを確認してください。

ありがとう。

4

4 に答える 4

4

このコードは、アクション メソッドまたはprocessActionメソッド内にあると想定しています。

action-phase から直接リダイレクトする代わりに、 orメソッドを介してレンダリングされるようactionResponse.sendRenderParameter("jspPage", LibraryConstants.PAGE_SUCCESS)に設定する方がよいでしょう。jspPagerenderdoView

また、場合によってはリダイレクトされないことが記載されているsendRedirectドキュメントを確認することも役立ちます。

また、コードの実行時にエラーや警告が表示されるかどうかも確認してください。

于 2014-05-03T09:23:42.390 に答える
3

そのコードを使用すると、別のページにリダイレクトするのではなく、別のポートレットの ID を指定するだけです。どのページに転送したいかの手がかりがありません。

週末に簡単に確認できる環境がありません (申し訳ありません)。解決策を自分で見つけるためにできることは次のとおりです。

  • 作成している URL を調べます。現在表示しているページをアドレス指定していることがわかります。
  • リダイレクト先のページの名前を実際に提供する方法を見つけてください。ヒント: リダイレクト先のポートレットは、多くのページに配置することも、まったく配置しないこともできます。そのページの 1 つを動的に見つける (そして、それが実際に必要なページであることを願っています) か、何らかの方法で構成する必要があります。
  • また、構造的には、ターゲット ページのポートレットの URL にリンクするよりも、単純なページに「単に」リンクする方がはるかに優れていることがわかりました。そうしないと、2 つの異なるポートレットを非常に密接に結合することになり、一方への変更を他方に反映する必要がある場合があります。別のポートレットを多かれ少なかれ直接アドレス指定する代わりに、パラメーター (パブリック レンダリング パラメーターなど) を使用して異なるポートレット間で通信します。

このコンピューターにはサンプル コードを提供する IDE がありません。

于 2014-05-04T09:22:13.723 に答える
0

最初にページの URL を見つける必要があります。friendlyURL分かりやすい URL ( )から取得できます。

  1. ThemeDisplay theme = (ThemeDisplay) getPortletRequest().getAttribute(WebKeys.THEME_DISPLAY);

  2. final long GROUP_ID = theme.getLayout().getGroupId(); Layout destinationLayout = LayoutLocalServiceUtil.getFriendlyURLLayout(GROUP_ID, false, friendlyUrl);

  3. Layout layout = LayoutLocalServiceUtil.getLayout(destinationLayout.getPlid()); String completeUrl = PortalUtil.getLayoutFullURL(layout, getThemeDisplay());

于 2015-04-29T09:36:54.283 に答える