tags:

views:

91

answers:

2

I have a form that needs to be submitted with ajax. I am trying to get the validation to work but it wont work when I use ajax. When I take the ajax out and submit the form with an empty testinput it properly triggers he validation and does not submit the form. How can I do this with an ajax call. My form is below.

<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>
+1  A: 

The <f:ajax> by default doesn't re-render the form, so you won't see anything. Replace <f:ajax> by <f:ajax execute="@form" render="@form" />.

BalusC
This is just a question because ajax wont always do what I want it to. Shouldn't he put <f:ajax execute="@form" render="@form"> inside the command button so that it triggers when an ActionEvent occurs or would his code do the same?
AnAmuser
In this particular code snippet, it does the same.
BalusC
+1  A: 

Maybe try something like this:

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

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