我有一个需要将POST数据发送到ADF Faces jspx页面的外部应用程序,然后ADF应用程序内的逻辑将接管。
每当我尝试访问请求范围中的POST变量时,它们都为空。同时GET变量仍然可以访问,但出于安全原因,我无法通过GET变量发送数据。
如何做到这一点?
谢谢,
加文
答案 0 :(得分:0)
两个选项:
1)我会建议最多这个: https://blogs.oracle.com/shay/entry/passing_parameters_to_adf_appl
2)创建一个扩展HttpServlet的java类,以便轻松捕获你的参数。
答案 1 :(得分: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()
访问请求即可。如果请求仍然完好无损,则应该可以使用post变量。
希望这有帮助!