2012-10-26 48 views
0

我有一個需要將POST數據發送到ADF Faces jspx頁面的外部應用程序,那麼ADF應用程序中的邏輯將接管。POST變量到ADF應用程序

每當我嘗試訪問請求範圍中的POST變量時,它們都是空的。同時GET變量仍然可以訪問,但出於安全原因,我無法通過GET變量發送數據。

任何方式如何做到這一點?

謝謝

加文

+0

你可以向我們提供一些關於如何獲得POST變量的代碼嗎? – User404

+0

我嘗試了多種方法:JSPX(JSP Expression)中的request.getParameter(「cal_user」)。使用以下邏輯爲我的AfterPhase和BeforePhase創建託管bean: HttpServletRequest request =(HttpServletRequest)FacesContext.getCurrentInstance()。getExternalContext()。getRequest(); String value = request.getParameter(「cal_user」); – GavinWoods

回答

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變量應該可用。

希望這會有所幫助!

+0

感謝您的輸入,這看起來像一個非常好的解決方案,當我需要不斷髮送POST數據。但是,因爲我只通過一個http請求傳輸這些數據,所以我創建了一個HTTP Servlet。無論如何,我會試試這個,因爲我正在學習ADF並讓你知道。謝謝! – GavinWoods

+0

你可以隨時添加一個過濾機制:) – mrswadge