2011-03-23 26 views
8

我有一個JSF頁面,通過context.getExternalContext().redirect(url);重定向URL的位置。像login.jsf?token = foobarJSF:重定向到網址作爲POST不是GET

我現在想要的是通過POST發送令牌,而不是通過GET請求。所以它不會顯示在url中,JSF可以這麼做嗎?

回答

15

這不適用於HTTP,因此也不適用於JSF。然而有幾種方法可以達到這個要求。

將它放在會話範圍內。在重定向頁面後面的bean中,讀取並從會話作用域中刪除它。或者當您使用JSF 2.0時,請使用Flash範圍。

轉發到包含指向所需URL的POST表單的頁面,將該標記作爲隱藏輸入值幷包含一些JS代碼,該代碼在頁面加載時執行form.submit()

8

是的,你可以通過你的支持bean重定向到包含所有隱藏的值,並使用form.submit();例如,一些臨時頁做到這一點:

輔助Bean:

public String submitValue() { 
     return "temp"; 
} 

temporary.jsf

<h:form id="JsfTemp" prependId="false"> 
    <h:outputText id="welcomeOutput" value="Test Sending form"/> 
    <h:inputHidden id="Merchant_Number" value="#{paymentBean.paymentDetails.merchantNumber}" /> 
</h:form> 
</body> 

<script type="text/javascript"> 
    function submitPage() { 
    document.getElementById("JsfTemp").action="http://localhost:9090/TestClient/HelloWorld"; 
    document.getElementById("JsfTemp").submit(); 
    } 
    submitPage(); 
</script> 
+1

這已經在第一個答案的第三段中提到了。 – BalusC 2011-05-31 12:45:03

+0

Yup BalusC只是想解釋這些東西。感謝發佈它幫助了我很多。 – 2011-06-01 04:59:16