0

我有一个外部应用程序需要将 POST 数据发送到 ADF Faces jspx 页面,然后 ADF 应用程序内部的逻辑将接管。

每次我尝试访问请求范围内的 POST 变量时,它们都是空的。同时 GET 变量仍然可以访问,但出于安全原因,我无法通过 GET 变量发送数据。

有什么办法可以做到这一点?

谢谢,

加文

4

2 回答 2

0

两种选择:

1)我最推荐这个: https ://blogs.oracle.com/shay/entry/passing_parameters_to_adf_appl

2)创建一个扩展HttpServlet的java类,这样你就可以轻松地捕捉你的参数。

于 2012-10-29T13:14:56.030 回答
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 变量应该可用。

希望这可以帮助!

于 2012-10-29T13:27:57.210 回答