在實現(xiàn)功能之前,我們需要在pom文件里添加一些必須的依賴:

validation-api是JSR-303規(guī)范的標(biāo)準(zhǔn)接口,hibernate-validator則是這套接口的一個實現(xiàn),而hibernate-validator的實現(xiàn)里面又會用到slf4j,所以還需要加上這兩個jar包。有了這些,我們就可以在此基礎(chǔ)上實現(xiàn)自定義注解約束擴展了。
本篇還是以SSM3為基礎(chǔ),以對角色名稱添加屏蔽詞為例來說明如何實現(xiàn)這些功能。
首先需要定義這樣一個屏蔽詞注解:

上面這個注解類,message(),groups()和payload()這三個方法是注解驗證的標(biāo)準(zhǔn)格式,filed()表示驗證的字段名稱,{constraint.default.words.message}是從ValidationMessages.properties資源文件中獲取的,這個文件的位置就在resources目錄下面。
現(xiàn)在定義了驗證接口,就需要有處理接口的實現(xiàn),WordsValidator.class就是用來處理這個的:

這里大象為了說明實現(xiàn)的方法,簡化了處理,實際開發(fā)中,可以改進(jìn)一下,通過使用屏蔽詞庫對value值進(jìn)行過濾。下面是一個測試類,對此注解進(jìn)行一個簡單的測試。

現(xiàn)在定義好了注解,我們就可以使用它了。

RoleController的save方法需要加入驗證以及錯誤處理:

頁面上想要顯示驗證的錯誤信息,最方便的就是直接使用spring-webmvc里的org.springframework.web.servlet.view.freemarker下的spring.ftl文件,它里面定義了很多的宏命令,同時還可以添加自定義的宏命令:

role_edit.html這個頁面的變動不大,主要就是四點,具體的可以查看源碼。
1、引入并定義<#import "/common/spring.ftl" as spring/>
2、在角色名input后面增加<label class="error" for="name" style="display:none;"></label>
3、然后加入jquery.js,用來解析showErrors中的腳本
4、使用<@spring.showErrors/>
最后,要想讓這些功能都能正常的運行起來,需要改下servlet-context.xml文件

源碼下載: ssm3_annotation
本文為菠蘿大象原創(chuàng),如要轉(zhuǎn)載請注明出處。http://www.aygfsteel.com/bolo