POST变量到ADF应用程序

时间:2012-10-26 17:43:22

标签: java jsf servlets oracle-adf

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

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

如何做到这一点?

谢谢,

加文

2 个答案:

答案 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变量。

希望这有帮助!