我有一个外部应用程序需要将 POST 数据发送到 ADF Faces jspx 页面,然后 ADF 应用程序内部的逻辑将接管。
每次我尝试访问请求范围内的 POST 变量时,它们都是空的。同时 GET 变量仍然可以访问,但出于安全原因,我无法通过 GET 变量发送数据。
有什么办法可以做到这一点?
谢谢,
加文
我有一个外部应用程序需要将 POST 数据发送到 ADF Faces jspx 页面,然后 ADF 应用程序内部的逻辑将接管。
每次我尝试访问请求范围内的 POST 变量时,它们都是空的。同时 GET 变量仍然可以访问,但出于安全原因,我无法通过 GET 变量发送数据。
有什么办法可以做到这一点?
谢谢,
加文
两种选择:
1)我最推荐这个: https ://blogs.oracle.com/shay/entry/passing_parameters_to_adf_appl
2)创建一个扩展HttpServlet的java类,这样你就可以轻松地捕捉你的参数。
我认为使用线程本地将传入请求存储为侦听器的一部分是安全的。
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 变量应该可用。
希望这可以帮助!