【问题标题】:CommandButton outside of a form: Is it possible to Post a Form by an Id?表单外的命令按钮:是否可以按 ID 发布表单?
【发布时间】:2012-01-23 14:13:58
【问题描述】:

我有一个不在 Form-Tag 中的 CommandButton (PrimeFaces 3.0.1)。有没有办法通过它的 Id 或其他东西来引用一个表单,这样即使它不是该表单的子元素,按钮也可以发布一个表单? 我没有在规格中找到任何合适的...

按钮目前看起来像这样:

<p:commandButton value="#{messages['000.label.ok']}"
         oncomplete="w00001.hide()" type="submit" 
                 action="cancel"
         ajax="false" immediate="true" />

按下按钮 JSF 后跳转到另一个页面,该页面由“取消”键映射。

谢谢!!!

【问题讨论】:

标签: java jsf primefaces


【解决方案1】:

编辑1 所以你想要做的是提交一个表单,然后重定向。如前所述,如果您想使用 commandButton 进行提交,它必须在表单内,但它不必是 same 表单。您可以在 commandButton 周围包裹第二个表单,并仍然使用它来提交您的第一个表单的值。

        <h:form id="form_test">
            <!-- values of this form will be submitted -->
        </h:form>
        <h:form>
            <p:commandButton value="cancel" action="#{yourBean.cancelFlow}"
                process="form_test @this" ajax="false" />
        </h:form>

YourBean.java 中的方法可能如下所示(假设您的 cancelpage.xhtml 在包 your.package 中)

public String cancelFlow() {
    // do something with form data

    return "/your/package/cancelpage?faces-redirect=true";
}

您也可以使用FacesContext.getCurrentInstance().getExternalContext().redirect以编程方式重定向

【讨论】:

  • 不幸的是,我认为这不是我需要的原因...我需要提交
  • 这确实提交了第一个表单(commandButton 的输入类型默认为“提交”)。也许我误解了你想要什么,你能发布你的源代码吗?
  • 我已经编辑了问题描述。我需要一种方法将此“取消”令牌发送到服务器,以便 JSF 可以将我重定向到另一个页面
  • 感谢您的帮助!最后我能够在表单中设置按钮,所以我的问题现在解决了。
【解决方案2】:

根据https://stackoverflow.com/a/11766570/3568831,您无法通过提交一个表单来处理另一个表单,您应该使用&lt;p:remoteCommand /&gt; 解释here 还有这个link看例子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2012-11-18
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多