apple0668
TDD,Agile,Scrum,Core Java,J2EE,Investment Blank
BlogJava
首頁
新隨筆
聚合
管理
隨筆-61 評論-159 文章-0 trackbacks-0
深入struts2中validation校驗框架的原理和使用(一)
在struts2中如果action繼承ActionSupport,就可以重寫
public void validate()
方法,如果是想校驗某個方法則如下:
public String login() throws Exception {....................};則校驗方法為
public void validateLogin() ,也就是validate+要被校驗的方法名(注意頭字母要大寫),這樣就可以實現所謂的服務器端的字段校驗。
struts2給我們提供了一個功能比較強大的
validation校驗框架。
以下介紹struts2校驗框架的使用:
在一個action中,例如:
1
import
java.util.Date;
2
3
import
com.opensymphony.xwork2.ActionSupport;
4
5
@SuppressWarnings(
"
serial
"
)
6
public
class
RegisterAction
extends
ActionSupport
{
7
private
String name;
8
private
int
age;
9
private
Date birthday;
10
11
@Override
12
public
String execute()
throws
Exception
{
13
//
TODO Auto-generated method stub
14
return
SUCCESS;
15
}
16
@Override
17
18
public
String getName()
{
19
return
name;
20
}
21
public
void
setName(String name)
{
22
this
.name
=
name;
23
}
24
25
public
int
getAge()
{
26
return
age;
27
}
28
public
void
setAge(
int
age)
{
29
this
.age
=
age;
30
}
31
public
Date getBirthday()
{
32
return
birthday;
33
}
34
public
void
setBirthday(Date birthday)
{
35
this
.birthday
=
birthday;
36
}
37
38
}
在action類的同一個包里面加入相關RegisterAction-validation.xml文件,
命名規則為:action名-validation.xml
首先要些校驗框架的的xml文件先從xml文件的dtd入手,用firefox或者chrome打開dtd(IE不可以正常打開),地址為:
http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd
,以下是校驗框架的dtd:
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
3
<!--
4
XWork Validators DTD.
5
Used the following DOCTYPE.
6
7
<!DOCTYPE validators PUBLIC
8
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
9
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
10
-->
11
12
13
<!
ELEMENT validators (field|validator)+
>
14
15
<!
ELEMENT field (field-validator+)
>
16
<!
ATTLIST field
17
name CDATA #REQUIRED
18
>
19
20
<!
ELEMENT field-validator (param*, message)
>
21
<!
ATTLIST field-validator
22
type CDATA #REQUIRED
23
short-circuit (true|false) "false"
24
>
25
26
<!
ELEMENT validator (param*, message)
>
27
<!
ATTLIST validator
28
type CDATA #REQUIRED
29
short-circuit (true|false) "false"
30
>
31
32
<!
ELEMENT param (#PCDATA)
>
33
<!
ATTLIST param
34
name CDATA #REQUIRED
35
>
36
37
<!
ELEMENT message (#PCDATA)
>
38
<!
ATTLIST message
39
key CDATA #IMPLIED
40
>
PS:看不懂dtd的,google一下dtd一些資料即可。
通過校驗框架的dtd的規范來寫校驗框架的xml配置文件,配置文件如下:
1
<!
DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
2
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
>
3
<
validators
>
4
<
field
name
="name"
>
5
<
field-validator
type
="requiredstring"
>
6
<
param
name
="trim"
>
true
</
param
>
7
<
message
>
the name shouldn't be blank!
</
message
>
8
</
field-validator
>
9
<
field-validator
type
="stringlength"
>
10
<
param
name
="minLength"
>
5
</
param
>
11
<
param
name
="maxLength"
>
10
</
param
>
12
<
message
>
name's length should be between ${minLength} and ${maxLength}!
</
message
>
13
</
field-validator
>
14
</
field
>
15
<
field
name
="age"
>
16
<
field-validator
type
="required"
>
17
<
message
>
age should not be blank!
</
message
>
18
</
field-validator
>
19
20
<
field-validator
type
="int"
>
21
<
param
name
="min"
>
1
</
param
>
22
<
param
name
="max"
>
150
</
param
>
23
<
message
>
age should be between ${min} and ${max}
</
message
>
24
</
field-validator
>
25
</
field
>
26
<
field
name
="birthday"
>
27
<
field-validator
type
="required"
>
28
<
message
>
birthday should not be blank!
</
message
>
29
</
field-validator
>
30
31
<
field-validator
type
="date"
>
32
<
param
name
="min"
>
2001-01-01
</
param
>
33
<
param
name
="max"
>
2003-12-31
</
param
>
34
<
message
>
birthday should be between ${min} and ${max}
</
message
>
35
</
field-validator
>
36
</
field
>
37
</
validators
>
其中校驗框架的xml配置文件里面的一些參數不是隨意的,是根據以下類里面來的
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
<!
DOCTYPE validators PUBLIC
3
"-//OpenSymphony Group//XWork Validator Config 1.0//EN"
4
"http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd"
>
5
<!--
START SNIPPET: validators-default
-->
6
<
validators
>
7
<
validator
name
="required"
class
="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"
/>
8
<
validator
name
="requiredstring"
class
="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"
/>
9
<
validator
name
="int"
class
="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"
/>
10
<
validator
name
="double"
class
="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"
/>
11
<
validator
name
="date"
class
="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"
/>
12
<
validator
name
="expression"
class
="com.opensymphony.xwork2.validator.validators.ExpressionValidator"
/>
13
<
validator
name
="fieldexpression"
class
="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"
/>
14
<
validator
name
="email"
class
="com.opensymphony.xwork2.validator.validators.EmailValidator"
/>
15
<
validator
name
="url"
class
="com.opensymphony.xwork2.validator.validators.URLValidator"
/>
16
<
validator
name
="visitor"
class
="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"
/>
17
<
validator
name
="conversion"
class
="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"
/>
18
<
validator
name
="stringlength"
class
="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"
/>
19
<
validator
name
="regex"
class
="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"
/>
20
</
validators
>
21
<!--
END SNIPPET: validators-default
-->
1、先從
requiredstring
入手,找到
com.opensymphony.xwork2.validator.validators.RequiredStringValidator
類
1
public
class
RequiredStringValidator
extends
FieldValidatorSupport
{
2
3
private
boolean
doTrim
=
true
;
4
5
6
public
void
setTrim(
boolean
trim)
{
7
doTrim
=
trim;
8
}
9
10
public
boolean
getTrim()
{
11
return
doTrim;
12
}
13
14
public
void
validate(Object object)
throws
ValidationException
{
15
String fieldName
=
getFieldName();
16
Object value
=
this
.getFieldValue(fieldName, object);
17
18
if
(
!
(value
instanceof
String))
{
19
addFieldError(fieldName, object);
20
}
else
{
21
String s
=
(String) value;
22
23
if
(doTrim)
{
24
s
=
s.trim();
25
}
26
27
if
(s.length()
==
0
)
{
28
addFieldError(fieldName, object);
29
}
30
}
31
}
32
}
33
注:其中trim就是此類中的一個聲明布爾類型的變量。
2、校驗框架中的
stringLength,對應的類是
com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator
1
public
class
StringLengthFieldValidator
extends
FieldValidatorSupport
{
2
3
private
boolean
doTrim
=
true
;
4
private
int
maxLength
=
-
1
;
5
private
int
minLength
=
-
1
;
6
7
8
public
void
setMaxLength(
int
maxLength)
{
9
this
.maxLength
=
maxLength;
10
}
11
12
public
int
getMaxLength()
{
13
return
maxLength;
14
}
15
16
public
void
setMinLength(
int
minLength)
{
17
this
.minLength
=
minLength;
18
}
19
20
public
int
getMinLength()
{
21
return
minLength;
22
}
23
24
public
void
setTrim(
boolean
trim)
{
25
doTrim
=
trim;
26
}
27
28
public
boolean
getTrim()
{
29
return
doTrim;
30
}
31
32
public
void
validate(Object object)
throws
ValidationException
{
33
String fieldName
=
getFieldName();
34
String val
=
(String) getFieldValue(fieldName, object);
35
36
if
(val
==
null
||
val.length()
<=
0
)
{
37
//
use a required validator for these
38
return
;
39
}
40
if
(doTrim)
{
41
val
=
val.trim();
42
if
(val.length()
<=
0
)
{
43
//
use a required validator
44
return
;
45
}
46
}
47
48
if
((minLength
>
-
1
)
&&
(val.length()
<
minLength))
{
49
addFieldError(fieldName, object);
50
}
else
if
((maxLength
>
-
1
)
&&
(val.length()
>
maxLength))
{
51
addFieldError(fieldName, object);
52
}
53
}
54
}
55
注:xml文件里面的兩個
minLength
,
maxLength
對應的怪了中聲明的兩個變量對應,其中xml中的
${minLength}
和
${maxLength}就是調用類中的getter方法。
總結:xml文件中其他屬性,比如
required、
date
等也可以通過以上的方法來分析,就清楚整個校驗框架的原理,使用就很簡單啦。
PS:現在使用的是field校驗,是field錯誤級別,詳細參考:
struts2中action和field級別錯誤處理
-------------------------------------------------------------------------------------------------
PS:本博客文章,如果沒有注明是有“轉”字樣,屬于本人原創。如果需要轉載,務必
注明作者
和
文章的詳細出處地址
,否則不允許轉載,多謝合作!
posted on 2008-11-28 22:56
apple0668
閱讀(3734)
評論(2)
編輯
收藏
所屬分類:
struts2
評論:
#
re: 深入struts2中validation校驗框架的原理和使用(一) 2008-12-01 11:13 |
楊愛友
這個validation干嘛用的?能不能舉個具體例子?
回復
更多評論
#
re: 深入struts2中validation校驗框架的原理和使用(一)[未登錄]
2009-01-01 12:06 |
apple0668
validation,主要是在服務器端對數據進行校驗的。
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
struts2設置開發模式控制臺錯誤信息
深入struts2中validation校驗框架的原理和使用(二)
深入struts2中validation校驗框架的原理和使用(一)
struts2中action和field級別錯誤處理
eclipse的第一個struts2插件:Alveole Studio MVC Web Project An eclipse plugin for Struts 2
ssh2中采用dao---service---action分層結構
struts2中head標簽的使用
struts2中命名空間的使用
Email:
chensp1230@163.com
歡迎交流
框架是告訴人們不該去做什么,而不是告訴人們該去做什么;容器是告訴人們該去做什么,而不是告訴人們不該去做什么!
<
2008年11月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
留言簿
(10)
給我留言
查看公開留言
查看私人留言
我參與的團隊
深圳Java俱樂部(0/0)
Netbeans 愛好者(0/0)
隨筆分類
(63)
Aglets(1)
drools(2)
eclipse(6)
groovy
hibernate(17)
java(7)
jboss
junit(3)
Log4(2)
MongoDB(1)
oracle(1)
spring(4)
struts2(8)
svn(1)
tomcat(4)
webwork(4)
web報表(1)
xml
心情港灣
集群(1)
隨筆檔案
(61)
2015年3月 (1)
2012年7月 (1)
2012年4月 (1)
2011年5月 (3)
2010年1月 (2)
2009年3月 (1)
2008年12月 (2)
2008年11月 (5)
2008年10月 (16)
2008年9月 (1)
2008年4月 (1)
2008年1月 (2)
2007年11月 (2)
2007年10月 (15)
2007年9月 (8)
友情鏈接
開源在線手冊
最新隨筆
1.?Ehcache集群方案
2.?MongoDB安裝手記
3.?任何人都可以重構<轉載>
4.?JDK6中JWS自帶webservice應用
5.?解決:Eclipse啟動tomcat 訪問不了 手動啟動可以訪問
6.?IntelliJ Idea10 常用快捷鍵
7.?Drools語法詳解<轉>
8.?eclipse3.4安裝drools插件手記
9.?Java日期時間運算
10.?java中使用功能強悍的正則表達式
搜索
最新評論
1.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記
非常感謝樓主分享,解決問題, Tomcat 7.0.59
--Gozs
2.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記[未登錄]
正解
--gao
3.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記
@123
已解決,謝謝提示myeclipse相關的有用信息~~
--sequoah
4.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記
贊 清空work文件夾就可以了
--維尼
5.?re: Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記
很好 問題解決了!
--兔兔
閱讀排行榜
1.?Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記(85539)
2.?系統學習hibernate之一:利用hibernate中的SchemaExport生成數據表(18639)
3.?eclipse的第一個struts2插件:Alveole Studio MVC Web Project An eclipse plugin for Struts 2(15690)
4.?Subversion之路---實現精細的目錄訪問權限控制<轉>(11306)
5.?IntelliJ Idea10 常用快捷鍵(9320)
評論排行榜
1.?Tomcat:IOException while loading persisted sessions: java.io.EOFException解決手記(62)
2.?eclipse的第一個struts2插件:Alveole Studio MVC Web Project An eclipse plugin for Struts 2(32)
3.?Tomcat啟動端口被占用異常處理(9)
4.?升級瑞星防火墻2008后,在myeclipse6.0中啟動tomcat遇到怪問題!(7)
5.?JDK6中JWS自帶webservice應用(6)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 apple0668
主站蜘蛛池模板:
国产精品亚洲专区无码不卡
|
A级毛片内射免费视频
|
久久亚洲精品11p
|
精品亚洲国产成AV人片传媒
|
国产亚洲精品a在线观看
|
麻豆国产人免费人成免费视频
|
久艹视频在线免费观看
|
一级做a毛片免费视频
|
国产精品亚洲一区二区三区
|
亚洲AV无码一区二区大桥未久
|
久久久久亚洲精品无码蜜桃
|
亚洲精品白浆高清久久久久久
|
国产一区二区视频免费
|
在线不卡免费视频
|
成年男女男精品免费视频网站
|
国产h视频在线观看网站免费
|
日韩免费的视频在线观看香蕉
|
91免费在线视频
|
日本免费A级毛一片
|
免费在线观影网站
|
亚洲免费人成在线视频观看
|
97无码人妻福利免费公开在线视频
|
中国videos性高清免费
|
中文毛片无遮挡高清免费
|
fc2免费人成在线
|
国产福利在线观看永久免费
|
国产精品1024在线永久免费
|
亚洲人色大成年网站在线观看
|
国产精品极品美女自在线观看免费
|
久久久久亚洲AV成人片
|
久久亚洲精品AB无码播放
|
自拍偷自拍亚洲精品被多人伦好爽
|
久久久久亚洲AV综合波多野结衣
|
亚洲另类少妇17p
|
不卡精品国产_亚洲人成在线
|
在线亚洲精品自拍
|
亚洲国产成人一区二区精品区
|
亚洲av日韩av无码
|
亚洲欧洲视频在线观看
|
狠狠色香婷婷久久亚洲精品
|
亚洲精品无码专区在线播放
|