2012-10-04 56 views
0

有沒有辦法讓JSF對我的輸入做驗證,但讓我控制如何顯示驗證錯誤?我想避免使用h:message在表示層處理JSF驗證錯誤避免h:message

當我在需要驗證支持的表單中的每個輸入組件下方編寫h:message組件時,我發現它使我的代碼太雜亂。由於頁面上有多個表格使用h:messages不是一個選項,因爲它也會顯示其他表格的錯誤信息。所以我想處理驗證後發送給表示層的錯誤消息&自己使用JS/Jquery做錯誤演示任務。那麼如何處理由JSF驗證服務引發的錯誤呢?

+0

爲什麼你不能使用'h:messages'?當您提交表單時,只有*表單將被驗證,並且只會顯示*這些*錯誤信息。我傾向於將「p:growl」用於僅限全局的消息,而對於特定於形式的消息則使用「p:messages」。 – RinaldoPJr

+0

,因爲我在頁面上有幾個表單,並且每個表單都需要驗證支持,以防我在每個表單中包含h:messages,那麼與一個表單相關的所有消息將以另一種形式顯示,而不是我想要的。 –

回答

0

只是根據UIForm#isSubmitted()有條件地呈現<h:messages>

<h:form binding="#{form1}"> 
    <h:messages rendered="#{form1.submitted}" /> 
    ... 
</h:form> 
<h:form binding="#{form2}"> 
    <h:messages rendered="#{form2.submitted}" /> 
    ... 
</h:form> 
<h:form binding="#{form3}"> 
    <h:messages rendered="#{form3.submitted}" /> 
    ... 
</h:form> 

或者只是引入一些ajax魔術,只更新當前窗體而不是整個視圖。

<h:form> 
    <h:messages /> 
    ... 
    <h:commandButton ...><f:ajax execute="@form" render="@form" /></h:commandButton> 
</h:form> 
<h:form> 
    <h:messages /> 
    ... 
    <h:commandButton ...><f:ajax execute="@form" render="@form" /></h:commandButton> 
</h:form> 
<h:form> 
    <h:messages /> 
    ... 
    <h:commandButton ...><f:ajax execute="@form" render="@form" /></h:commandButton> 
</h:form> 

所以我要處理驗證後發送給表示層&使用JS/jQuery的做錯誤演示任務自己的錯誤消息。

創建custom component or renderer它取代了<h:messages>