只要是mvc的框架,都會提供有驗證框架,但是需要擺正乙個明確的態度,任何乙個框架的前端驗證框架都不好用。
在之前的驗證操作之中,都使用的是validate()方法進行的手工編寫,但是這樣的手工編寫難度太高了,而且也太麻煩了,所以在開發之中可以利用驗證框架來解決此類問題。
如果有驗證框架了,那麼就沒有必要去覆寫validate()方法了,但是驗證框架依然基於validate()的操作形式使用。
1、首先需要有乙個執行資料處理的action——newsaction;
2、為這個action設定乙個驗證規則檔案,名稱是:newsaction-validation.xml
(1)此檔案要與newsaction儲存在同乙個包中;
<?xml version="1.0" encoding="utf-8" ?>
3、定義newsaction-validation.xml檔案,編寫驗證規則
<?xml version="1.0" encoding="utf-8" ?>
>
name
="news.nid"
>
type
="required"
>
>
【驗證框架】新聞編號不允許為空!message
>
field-validator
>
field
>
name
="news.ntitle"
>
type
="requiredstring"
>
>
【驗證框架】新聞標題不允許為空!message
>
field-validator
>
field
>
name
="news.ncontent"
>
type
="requiredstring"
>
>
【驗證框架】新聞內容不允許為空!message
>
field-validator
>
field
>
name
="news.npubdate"
>
type
="date"
>
>
【驗證框架】發布日期不允許為空!message
>
field-validator
>
field
>
validators
>
此時的**幾乎沒有做任何的修改,而是直接使用了這樣乙個配置檔案實現了資料的驗證,並且橫向替代了validate()方法,從**的簡潔度來講,此類操作更加容易。
依然只能夠很無奈的發現,此時的驗證框架即使可以使用,也是在資料賦值成功之後。
實際上在驗證框架裡面還可以做許多的事情,例如:驗證數字的範圍是否正確,長度是否合適,以及發布日期是否滿足、正則操作是否可用等等。
範例:編寫newsaction-validation.xml檔案,完善驗證
<?xml version="1.0" encoding="utf-8" ?>
>
name
="news.nid"
>
type
="int"
>
name
="min"
>
10param
>
name
="max"
>
30param
>
>
【驗證框架】id必須在 $ 和$之間message
>
field-validator
>
field
>
name
="news.ntitle"
>
type
="requiredstring"
>
name
="trim"
>
trueparam
>
name
="minlength"
>
4param
>
name
="maxlength"
>
10param
>
>
【驗證框架】新聞標題長度應為$-$message
>
field-validator
>
field
>
name
="news.ncontent"
>
type
="regex"
>
name
="expression"
>
param
>
>
【驗證框架】新聞內容應為鏈結形式message
>
field-validator
>
field
>
name
="news.npubdate"
>
type
="date"
>
>
【驗證框架】發布日期不允許為空!message
>
field-validator
>
field
>
validators
>
即便現在可以進行驗證了,那麼問題依然存在,它只是橫向替代validate()。但是如果資料型別輸入有問題,那麼依然會在後台出現錯誤,並且此時會顯示的錯誤資訊是:invalid field value for field "news.nid".
,這樣的資訊是可以修改的,只需要修改messages.properties檔案即可。
範例:修改messages.properties檔案,增加錯誤顯示
invalid.fieldvalue.news.nid=輸入錯誤,新聞編號必須輸入數字!
invalid.fieldvalue.news.npubdate=輸入錯誤,發布日期格式必須為(yyyy-mm-dd)
以上的資訊實際上是資料型別轉換的錯誤資訊,這樣的錯誤資訊是在出錯後自動使用的,也向fielderrors中儲存。
不管是驗證方法還是驗證框架,最為核心的概念:
(1)所有的錯誤資訊都使用fielderrors返回,使用addfielderror()新增錯誤;
(2)所有的驗證框架都有乙個最本質的問題——資料賦值之後執行。
正因為驗證框架的執行順序有問題,,所以在實際的開發之中,它只能作為二號驗證器使用,或者不使用。
Struts2x對比Struts1x的先進
筆者已經毫不懷疑struts 2x比struts 1x強大,也不辯解struts 1x與2x各自的優點,因為在我看來 struts 2x繼承了struts 1x的優秀特性,並且通過struts在專案中應用的累積,發生了不小的更適用的新功能 下面讓我結合自己的專案應用來揭秘struts 2x的這些偉大...
Struts2驗證框架
action配置中一定要設定input返回頁面 新增驗證只要建立驗證的xml檔案 在action同包下,建立 action類名 validation.xml 如 validateaction建立validateaction validation.xml 注意 1.要驗證的方法不能叫input.2.這...
struts2 驗證框架
驗證框架 validate 第一種方式 繼承actionsupport類重寫validate 方法 表示提交到此action所有請求都會執行驗證。eg public classloginaction extendsactionsupport publicstring execute override...