JSF:将url重定向为POST而不是GET

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的

我有一个JSF页面,通过
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段已经提到了这一点。是的,巴卢斯克只是想解释一下。谢谢你的帖子,它对我帮助很大。