我有這個小小的表單,並試圖理解在JSF驗證中使用ajax。這是表格。 (該支持Bean只是一個簡單的bean有兩個變量firstName和lastName。)JSF ajax驗證vs「正常」驗證
<h:form>
<h:outputLabel for="firstName" value="First Name: " />
<h:inputText id="firstName" value="#{userBean.firstName}">
<f:validateLength minimum="5" />
<f:ajax event="keyup" render="firstNameMsg" />
</h:inputText>
<h:message id="firstNameMsg" for="firstName" style="color: red" />
<br />
<h:outputLabel for="lastName" value="Last Name: " />
<h:inputText id="lastName" value="#{userBean.lastName}">
<f:validateLength minimum="5" />
<f:ajax event="keyup" render="lastNameMsg" />
</h:inputText>
<h:message id="lastNameMsg" for="lastName" style="color: red" />
<br />
<h:commandButton value="Submit">
<f:ajax execute="firstName lastName" render=":greeting" />
</h:commandButton>
<br />
</h:form>
<h:outputText id="greeting" value="#{userBean.greeting}" />
我已經AJAX連接到我的按鈕,這使得與在提交這是很好的姓氏和名字的outputText標籤。我的問題是爲什麼我需要使用f:ajax
標記和f:validateLength
標記來驗證這兩個字段?我的理解是,ajax執行所有生命週期階段直到渲染響應階段,即它包含驗證。無論是來自ajax請求還是常規提交/操作請求,驗證階段是否不會使用消息呈現頁面?如果我刪除附加到輸入字段的ajax標籤,驗證消息不會顯示出來,但是如果我完全刪除ajax並僅使用commandButtons操作事件的常規提交,就會顯示驗證消息。
謝謝, 艾倫
謝謝你的工作。是的,我知道keyup事件不是一個好主意,我只是想要一個與AJAX一起工作的東西,你的解決方案更好。乾杯 –