2010-08-20 106 views
4

我有一个表单,需要提交与Ajax。我试图让验证工作,但它不会工作,当我使用Ajax。当我拿出ajax并提交一个空的testinput表单时,它会正确触发他的验证并且不会提交表单。我怎样才能做到这一点与ajax电话。我的表格在下面。JSF 2.0 - Ajax提交验证输入

<h:form> 
    <f:ajax> 
    <h:panelGrid columns="3"> 
     <h:outputLable for=test" value="testinput:" /> 
     <h:inputText id=test" required="true" label="testinput" /> 
     <h:message for="test" id="testError"/> 
    </h:panelGrid> 

    <h:commandButton value="Submit" actionListener="#{testBean.doSomething}" /> 
    </f:ajax> 
</h:form> 

回答

5

<f:ajax>默认情况下不会重新渲染窗体,所以你不会看到任何东西。用<f:ajax execute="@form" render="@form" />代替<f:ajax>

+1

这仅仅是一个问题,因为阿贾克斯不会永远做我想要它。不应该在命令按钮中放置,以便在发生ActionEvent时触发它,或者他的代码执行相同操作吗? – AnAmuser 2010-08-21 10:16:37

+0

在这个特定的代码片段中,它也是这样做的。 – BalusC 2010-08-21 14:27:16

3

也许尝试这样的事:

<h:form id="yourFormId"> 
    <!-- form content --> 

    <h:commandButton value="Submit"> 
    <f:ajax execute="yourFormId" listener="#{testBean.doSomething}"/> 
    </h:commandButton> 
</h:form>