POSTデータをADF Faces jspxページに送信する必要がある外部アプリケーションがあり、ADFアプリケーション内のロジックが引き継ぎます。
リクエストスコープでPOST変数にアクセスしようとするたびに、それらはnullです。一方、GET 変数には引き続きアクセスできますが、セキュリティ上の理由から、GET 変数を介してデータを送信することはできません。
これを行う方法はありますか?
ありがとうございました、
ギャビン
POSTデータをADF Faces jspxページに送信する必要がある外部アプリケーションがあり、ADFアプリケーション内のロジックが引き継ぎます。
リクエストスコープでPOST変数にアクセスしようとするたびに、それらはnullです。一方、GET 変数には引き続きアクセスできますが、セキュリティ上の理由から、GET 変数を介してデータを送信することはできません。
これを行う方法はありますか?
ありがとうございました、
ギャビン
着信リクエストをリスナーの一部として保存するためにスレッドローカルを使用するのは安全だと思います。
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()
。リクエストがまだ無傷であれば、投稿変数が利用可能であるはずです。
お役に立てれば!
2 つのオプション:
1)これを最もお勧めします: https://blogs.oracle.com/shay/entry/passing_parameters_to_adf_appl
2) パラメータを簡単にキャッチできるように、HttpServlet を拡張する Java クラスを作成します。