2010-08-20 133 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>