使用框架不違背框架(另請參閱參考指南中的Errors Tag)。
首先創建一個包含您需要的錯誤代碼的屬性文件。在DefaultMessageCodesResolver
中定義瞭如何生成錯誤代碼。基本上,它下面的
例如,代碼 「typeMismatch」 的情況下,對象名 「用戶」,現場 「年齡」:
- 嘗試 「typeMismatch.user.age」
- 嘗試 「typeMismatch.age」
- 嘗試 「typeMismatch.int」
- 嘗試 「typeMismatch」
現在假設您的模型名爲user,請將以下內容添加到屬性文件中(假定它的名稱爲messages.properties
。)。
typeMismatch.user.age=Entered value is not a valid age.
typeMismatch.int=Entered value is not an integer.
現在刪除您的控制器你的代碼(離開hasError
檢查,你可能要重新渲染頁面)。
在您的配置中爲DispatcherServlet
定義MessageSource
(如果您還沒有的話)。
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="baseName" value="messages" />
</bean>
在JSP
現在只需添加<form:errors path="*" />
在頂部和急,你就會有個錯誤在你的頁面。如果您願意,您可以考慮用戶語言的附加獎勵。
如果你想顯示錯誤旁邊的錯誤,你可能想要做這樣的事情。
<div>
<div><label for="age">Age</label></div>
<div><form:input path="age" id="age" /></div>
<div><form:errors path="age" cssClass="error" /></div>
</div>
現在錯誤呈現在字段後面。
有沒有必要自己搞砸這些事情。
你爲什麼需要這個?有錯誤代碼註冊其中之一就像'formname.field.TypeMismatch'(或者是相反的方式)。基本上你想要的是已經支持開箱錯誤信息/綁定,所以不知道你爲什麼要解決這個問題。 –
查看編輯的問題。我想發回一些東西給用戶。就像「你輸入了錯誤的年齡」。但是我無法在Validator中捕捉到這個條件。我的意思是我想不知何故條件:字段時間不匹配,併發送特定的錯誤到特定的輸入字段。 – ovod
如前所述,默認情況下已經支持,因此我想知道爲什麼你要重新發明輪子並且圍繞框架而不是框架。 –