08 05Struts 2 x驗證框架

2021-10-07 11:43:35 字數 3422 閱讀 1225

只要是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...