我有一個需要將POST數據發送到ADF Faces jspx頁面的外部應用程序,那麼ADF應用程序中的邏輯將接管。POST變量到ADF應用程序
每當我嘗試訪問請求範圍中的POST變量時,它們都是空的。同時GET變量仍然可以訪問,但出於安全原因,我無法通過GET變量發送數據。
任何方式如何做到這一點?
謝謝
加文
我有一個需要將POST數據發送到ADF Faces jspx頁面的外部應用程序,那麼ADF應用程序中的邏輯將接管。POST變量到ADF應用程序
每當我嘗試訪問請求範圍中的POST變量時,它們都是空的。同時GET變量仍然可以訪問,但出於安全原因,我無法通過GET變量發送數據。
任何方式如何做到這一點?
謝謝
加文
兩個選項:
1)我建議這一個最: https://blogs.oracle.com/shay/entry/passing_parameters_to_adf_appl
2)請其延伸的Java類的HttpServlet所以你可以很容易地捕捉你的參數。
謝謝!我創建了一個HTTP Servlet並捕獲了我的POST數據。完美工作。我會在今天晚些時候或今晚晚些時候發佈我的解決方案。 – GavinWoods
我認爲使用線程本地來存儲傳入請求作爲偵聽器的一部分是安全的。
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變量應該可用。
希望這會有所幫助!
感謝您的輸入,這看起來像一個非常好的解決方案,當我需要不斷髮送POST數據。但是,因爲我只通過一個http請求傳輸這些數據,所以我創建了一個HTTP Servlet。無論如何,我會試試這個,因爲我正在學習ADF並讓你知道。謝謝! – GavinWoods
你可以隨時添加一個過濾機制:) – mrswadge
你可以向我們提供一些關於如何獲得POST變量的代碼嗎? – User404
我嘗試了多種方法:JSPX(JSP Expression)中的request.getParameter(「cal_user」)。使用以下邏輯爲我的AfterPhase和BeforePhase創建託管bean: HttpServletRequest request =(HttpServletRequest)FacesContext.getCurrentInstance()。getExternalContext()。getRequest(); String value = request.getParameter(「cal_user」); – GavinWoods