0

POSTデータをADF Faces jspxページに送信する必要がある外部アプリケーションがあり、ADFアプリケーション内のロジックが引き継ぎます。

リクエストスコープでPOST変数にアクセスしようとするたびに、それらはnullです。一方、GET 変数には引き続きアクセスできますが、セキュリティ上の理由から、GET 変数を介してデータを送信することはできません。

これを行う方法はありますか?

ありがとうございました、

ギャビン

4

2 に答える 2

0

着信リクエストをリスナーの一部として保存するためにスレッドローカルを使用するのは安全だと思います。

package my.pkg.http.listener;

import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;

public class Request implements ServletRequestListener {
  private static final ThreadLocal<ServletRequest> requests = new ThreadLocal<ServletRequest>();

  public void requestInitialized( ServletRequestEvent event ) {
    requests.set( event.getServletRequest() );
  }

  public void requestDestroyed( ServletRequestEvent event ) {
    requests.remove();
  }

  public static HttpServletRequest currentRequest() {
    return ( HttpServletRequest ) requests.get();
  }
}

リスナーを含めるには、次のように web.xml を変更する必要があります。

<listener>
  <listener-class>my.pkg.http.listener.Request</listener-class>
</listener>

理論的には、 を使用してリクエストに簡単にアクセスできますRequest.currentRequest()。リクエストがまだ無傷であれば、投稿変数が利用可能であるはずです。

お役に立てれば!

于 2012-10-29T13:27:57.210 に答える
0

2 つのオプション:

1)これを最もお勧めします: https://blogs.oracle.com/shay/entry/passing_parameters_to_adf_appl

2) パラメータを簡単にキャッチできるように、HttpServlet を拡張する Java クラスを作成します。

于 2012-10-29T13:14:56.030 に答える