我有一个JSF页面,通过context.getExternalContext().redirect(url);
重定向,其中url是sth。喜欢 login.jsf?token = foobar
我现在想要的是通过POST而不是通过GET请求发送令牌。所以它没有出现在url中,这可以用JSF吗?
答案 0 :(得分:15)
使用HTTP是不可能的,因此JSF也不行。但是有几种方法可以达到这个要求。
将其放入会话范围。在重定向页面后面的bean中,从会话范围中读取并删除它。或者当您使用JSF 2.0时,请使用闪存范围。
转发到包含指向所需网址的POST表单的页面,将该标记作为隐藏的输入值,并包含一些在页面加载时执行form.submit()
的JS代码。
答案 1 :(得分: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>