使用框架去開發軟體,最大的好處就是節省許多開發流程,所以許多人容易被框架所框住,在做專案開發的時候有些頁面具有提交表單的功能,為了安全性往往在要做表單的格式驗證,有些人會習慣使用Javascript Framework在前端網頁把驗證做掉(例如: jQuery Validation),但是我們應該在後端再做一層驗證,讓我們的頁面更安全更好用一些。
通常,許多採用Spring MVC的開發者會選擇使用Spring的Form Tag Libary搭配Hibernate依照JSR303規範實作好的Bean Validation在後端用Tag的方式許規範每一個欄位所要驗證的格式。
然而,對於許多人而言他們已經習慣運用Javascript & Ajax 技術去處理他們網頁前端的各種功能,再利用JSON格式作為前端的Browser與後端的溝通,有些時候因為專案的需求,API文件幾乎也都是訂定JSON格式的回傳。因此,有許多人希望能夠在Spring MVC中達到 Ajax-Form Validation。
以下我們將用簡單的小範例完成基本的 Ajax-Form Validation。
在此我們將以一個簡單User表單驗證做範例,使用者在提交的時候若不符合格式就會有警示,阻擋表單提交。
使用的相關資源或技術:
1.Spring Framework RELEASE 3.2.7
2.Hibernate Validator 4.1.0 FINAL
3.JDK 1.7
4.Eclipse kepler 4.3
首先如果你手邊有個基本可以運作的Spring MVC網站,那你可以在你的servlet-context中配置如下設定
記得要新增一個messages.properties檔放在src底下,然後可以在裡面設定要顯示的錯誤訊息,我們後面的步驟會提到
<!-- messages.properties -->
<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="messages" />
有的人可能比較適合這種寫法,原則上只是schema的不同而已,基本上都差不多
<!-- messages.properties -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="messages" />
首先我們制作一個User Bean,其中Bean裡面的Validation Rule可以參考
http://hibernate.org/validator/
每個驗證要呈現給使用者的錯誤訊息我們可以設定在messages.properties裡面,然後命名規則如下:
NotEmpty.user.name = Name is required !
這句的意思依序是非空驗證,對user bean驗證,驗證name這個欄位
製作一個User Bean
有了User Bean之後,我們需要一個FormValidationController控制我們頁面form.jsp(表單)
最後,實作一個頁面form.jsp,然後我們這裡使用jquery ajax去做post動作
大功告成~
收工~