【问题标题】:FacesContext redirect with POST parametersFacesContext 使用 POST 参数重定向
【发布时间】:2013-06-21 09:47:37
【问题描述】:

我需要使用 POST 参数将页面重定向到外部站点,但我不能使用原版 HTML <form action="url">,就像这里解释的那样:

JSF commandButton - passing POST params to an external site

因为这样表单将在 jsf 表单中 - 而且它不起作用。

是否可以使用:

FacesContext.getCurrentInstance().getExternalContext().redirect("http://example.com");

以某种方式使用 POST 参数而没有额外的香草形式?或者也许还有其他方法可以在没有形式的情况下实现这一目标?

【问题讨论】:

  • 我了解到您的主要 HTML 中有一个 FORM,并且您希望在其中进行重定向。您可以在外面创建另一个 FORM 并使用 javascript 调用它。
  • 这是个好主意,但问题是我需要为表格中每一行中的项目动态创建几个按钮。
  • 每一个都发送不同的参数?,也许你可以实现你的JS函数来接收这些参数并动态修改表单,或者如果只是URL不同,那么传递URL。
  • @freak - 我想重定向到外部站点 - 所以我既不能使用 cookie 也不能使用会话。

标签: jsf jsf-2


【解决方案1】:

试试这样的:

JAVASCRIPT:

function redirect() {
    document.getElementById("mySubmitButton").submit();
}

XHTML:

<h:form>
     <span onclick="javascript:redirect()" class="linkClass">REDIRECT</span>
</h:form>

<div style="display:none:"> <!-- If you want it hidden -->
    <form action="http://external/myplace.html" method="post"> 
        <input type="hidden" value="value1"></input>
        <input type="submit" id="mySubmitButton"</input>
    </form>
</div>

编辑:添加了另一个测试。

传递动态参数

在这个例子中,我们假设我们总是要发送一个值。

JAVASCRIPT:

function redirect(dynamicValue) {
    document.getElementById("dynamicField").value = dynamicValue;
    document.getElementById("mySubmitButton").submit();
}

XHTML:

<h:form>
     <span onclick="javascript:redirect('myValue')" class="linkClass">REDIRECT</span>
</h:form>

<div style="display:none:"> <!-- If you want it hidden -->
    <form action="http://external/myplace.html" method="post"> 
        <input id="dynamicField" type="hidden" value=""></input>
        <input type="hidden" value="value1"></input>
        <input type="submit" id="mySubmitButton"</input>
    </form>
</div>

【讨论】:

  • 我喜欢这个解决方案,但是如何根据我按下的按钮传递不同的值?我需要从表中传递一个值 - #{v.value}。
  • @robson 我添加了另一个传递参数的版本,我希望这就是你要找的:)
  • @BalusC - 你有更好的吗?
  • @BalusC - 我不需要 JSF - 你是对的,但我需要摆脱形式 - 因为我已经在其中,所以 - 我认为 maqjav 的解决方案在我的情况。这就是为什么我想尝试使用 FacesContext 重定向 - 尝试在我的第一个表单中重定向到另一个页面,但我需要传递 POST 参数。
猜你喜欢
  • 2013-07-05
  • 2016-02-04
  • 2013-07-10
  • 2011-09-30
  • 2019-05-02
  • 2011-02-21
  • 1970-01-01
  • 2020-08-12
相关资源
最近更新 更多