2012-07-04 133 views
0

驗證在Spring 3.X: 下面是從messages_en.properties片段。我有一個具有用戶名和密碼字段的表單。當用戶在「用戶名」字段中沒有輸入任何內容時,它將這些消息顯示在下方。春天驗證使用@Valid註釋顯示自定義消息

NotEmpty.loginBean.username=Username cannot be Empty 
Size.loginBean.username=Size must between 5 to 50 characters. 

message.properties中給出的任何HTML標記都不會被解釋。

NotEmpty.loginBean.username=<li>Username cannot be Empty</li> 

上面將顯示<李>,因爲它是。 問題: 1)是否有解釋HTML標籤,並顯示其輸出的任何方式? 2)我可以顯示單個消息,雖然兩個驗證失敗?

回答

1

廣告。 1)是,使用htmlEscape="false"

<form:errors path="nip" cssClass="error" htmlEscape="false" /> 

Ad。 2)這實際上是JSR303的致命弱點 - 這是可以做到的,但既不容易也不乾淨(見this issue)。驗證每個標註的字段的順序是不確定的,所以訣竅是使用@GroupSequence和自定義組等中記載herehere

另一種解決方案是使用custom annotation with @ReportAsSingleViolation,但不會明顯NotEmpty和尺寸錯誤,因爲這將有它自己的錯誤消息。