1

URL からクエリ パラメータ値を取得するロジックを追加した Liferay プラットフォームで開発されたポートレットがあります。サイトを取得しました: http://localhost:8080/web/guest/example、このサイトは、Liferay にない別の外部サイトから、最後にクエリパラメーターを使用して呼び出されています: http://localhost:8080/ web/guest/example?value=test . Liferay ポートレット コードでは、動作していない URL からパラメーター値を取得するロジックを適用しました。「null」値を返します。

HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(request)); 
        String myValue = httpReq.getParameter("value");     
        System.out.println(myValue);

私もこの方法を試しましたが、クエリパラメータから同じ「null」値を取得します:

HttpServletRequest httpRequest = PortalUtil.getHttpServletRequest(request);
        String myValue = httpRequest.getParameter("value");
        System.out.println(myValue);

ここで間違っていること、または外部サイトからクエリパラメータ値を取得するにはどうすればよいですか?

4

2 に答える 2

1

たまたま設定してしまった場合

    <render-weight>0</render-weight>
    <ajaxable>true</ajaxable>

ではliferay-portlet.xml、ポートレットは Ajax を介してレンダリングされ、同じ HTTP 要求ではなくなります。私はそれを試しました:これらの設定がなければ、コード(最初の選択肢)は(doViewメソッドで)うまく動作しました。

ただし、(ポータル内の) ランダムなリクエスト パラメータへのアクセスに依存するのは悪い習慣です。完全なポータル URL を作成するか、Liferay のフレンドリ URL 機能を使用する必要があります。そうすれば、サーブレットとポートレットがランダムに混在するのではなく、実際にポータルの世界にいることができます。

于 2016-01-21T16:19:40.350 に答える
1

内部doView()で次のことを試したところ、うまくいきました:

HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(renderRequest);
HttpServletRequest httpOrigReq = PortalUtil.getOriginalServletRequest(httpReq);
String myValue = httpOrigReq.getParameter("value");

唯一の違い (かもしれません) は、RenderRequest オブジェクトを使用したことです。(あなたのrequest-object の型が見えないので。)

于 2016-02-01T10:30:28.923 に答える