JSF:将url重定向为POST而不是GET
我有一个JSF页面,通过JSF:将url重定向为POST而不是GET,jsf,post,redirect,get,request,Jsf,Post,Redirect,Get,Request,我有一个JSF页面,通过context.getExternalContext().redirect(url)重定向其中url类似于login.jsf?token=foobar 我现在想要的是通过POST而不是GET请求发送令牌。因此,它不会显示在url中,这在JSF中可能吗?在HTTP中不可能,在JSF中也不可能。然而,有几种方法可以达到这一要求 将其放入会话范围。在重定向页面后面的bean中,读取并将其从会话范围中删除。或者当您使用JSF2.0时,使用flash范围 转发到包含指向所需URL的
context.getExternalContext().redirect(url)重定向代码>其中url类似于login.jsf?token=foobar
我现在想要的是通过POST而不是GET请求发送令牌。因此,它不会显示在url中,这在JSF中可能吗?在HTTP中不可能,在JSF中也不可能。然而,有几种方法可以达到这一要求
将其放入会话范围。在重定向页面后面的bean中,读取并将其从会话范围中删除。或者当您使用JSF2.0时,使用flash范围
转发到包含指向所需URL的POST表单的页面,将令牌作为隐藏输入值,并在页面加载时包含一些不包含form.submit()
的JS代码。是的,您可以通过将支持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>
函数提交页(){
document.getElementById(“JsfTemp”).action=”http://localhost:9090/TestClient/HelloWorld";
document.getElementById(“JsfTemp”).submit();
}
提交页();
第一个答案的第3段已经提到了这一点。是的,巴卢斯克只是想解释一下。谢谢你的帖子,它对我帮助很大。