表单外的CommandButton:是否可以通过ID发布表单?

时间:2012-01-23 14:13:59

标签: java jsf primefaces

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

按钮目前看起来像这样:

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

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

感谢!!!

2 个答案:

答案 0 :(得分:3)

EDIT1 所以你想要做的是提交一个表格,然后重定向。如前所述,如果你想将它用于提交,commandButton必须在一个表单中,但它不必是相同的形式。您可以在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

以编程方式重定向

答案 1 :(得分:0)

根据https://stackoverflow.com/a/11766570/3568831您无法通过提交一个表单来处理另一个表单,您应使用<p:remoteCommand />解释here 以及使用此link查看示例