我有一個JSF頁面,通過context.getExternalContext().redirect(url);
重定向URL的位置。像login.jsf?token = foobarJSF:重定向到網址作爲POST不是GET
我現在想要的是通過POST發送令牌,而不是通過GET請求。所以它不會顯示在url中,JSF可以這麼做嗎?
我有一個JSF頁面,通過context.getExternalContext().redirect(url);
重定向URL的位置。像login.jsf?token = foobarJSF:重定向到網址作爲POST不是GET
我現在想要的是通過POST發送令牌,而不是通過GET請求。所以它不會顯示在url中,JSF可以這麼做嗎?
這不適用於HTTP,因此也不適用於JSF。然而有幾種方法可以達到這個要求。
將它放在會話範圍內。在重定向頁面後面的bean中,讀取並從會話作用域中刪除它。或者當您使用JSF 2.0時,請使用Flash範圍。
轉發到包含指向所需URL的POST表單的頁面,將該標記作爲隱藏輸入值幷包含一些JS代碼,該代碼在頁面加載時執行form.submit()
。
是的,你可以通過你的支持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>
這已經在第一個答案的第三段中提到了。 – BalusC 2011-05-31 12:45:03
Yup BalusC只是想解釋這些東西。感謝發佈它幫助了我很多。 – 2011-06-01 04:59:16