在表单内执行commandButton并带有验证错误

时间:2012-02-23 13:00:34

标签: validation jsf facelets

我想在backbean中执行一个函数,使用带有验证错误的表单中的CommandButton。

使用代码示例,我想调用函数'resiCon.cancel()',无论表单上是否存在验证错误。

你能帮助我吗?

<h:form id="mainform">

    ....      
    <h:inputText value="#{resiCon.code">
        <f:validateLongRange minimum="1" />
    </h:inputText>

    <h:commandButton id="save" value="Save" update="mainform" action="#{resiCon.save()}"/>
    <h:commandButton id="cancel" value="Cancel" update="mainform" action="#{resiCon.cancel()}"/>

</h:form>

非常感谢你。

Tomcat v7.0,Myfaces 2.1.5,Spring 3.1.0

2 个答案:

答案 0 :(得分:1)

至少有两种方式:

  1. immediate="true"添加到取消按钮。这会跳过没有此设置的所有输入字段。

    <h:commandButton id="cancel" ... immediate="true" />
    

    当您在某些输入字段中使用immediate="true"来确定优先级时,这可能无效。

  2. 让它执行一个ajax请求,其中只执行@this,从而忽略所有字段。

    <h:commandButton id="cancel" ... >
        <f:ajax execute="@this" render="@all" />
    </h:commandButton>
    

答案 1 :(得分:1)

immediate="true"上使用<h:commandButton>。这是一篇专门针对取消按钮和immediate="true"属性的文章:http://jerryorr.blogspot.com/2012/01/jsf-and-immediate-attribute-command.html