Struts2输入校验推荐看.docx
《Struts2输入校验推荐看.docx》由会员分享,可在线阅读,更多相关《Struts2输入校验推荐看.docx(10页珍藏版)》请在冰豆网上搜索。
![Struts2输入校验推荐看.docx](https://file1.bdocx.com/fileroot1/2023-1/27/c4a7b478-f709-412e-9590-4c1303dbe416/c4a7b478-f709-412e-9590-4c1303dbe4161.gif)
Struts2输入校验推荐看
Struts2输入校验
(一)----validate方法-validateXxx方法
时间:
2009-03-2009:
31来源:
javaeyeelf8848点击:
1291次
-
这是一种编码校验的方法,我重写ActionSupport父类的validate方法来实现.
Action执行时一定会执行validate方法,若有不合格的输入就调用addFieldError("age","年领应在0-200之间");方法.
1 login.jsp
HTML标签:
Html代码
错误信息:
fielderror>
fielderror>
用户名:
年 龄:
生 日:
点对象:
struts2标签
Html代码
formaction="login">
textfieldname="username"label="用户名">
textfield>
textfieldname="age"label="年 龄">
textfield>
textfieldname="birthday"label="生 日">
textfield>
textfieldname="point"label="点对象">
textfield>
submit>
submit>
form>
2LoginAction.java
Java代码
packagessh.org.web;
importjava.util.Date;
importjava.util.List;
importssh.org.util.Point;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginActionextendsActionSupport
{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privateStringusername;
privateintage;
privateDatebirthday;
privateListaihao;
@Override
publicStringexecute()throwsException
{
return"success";
}
@Override
publicvoidvalidate()
{
if(age<0||200{
addFieldError("age","年领应在0-200之间");
}
}
}
看上面的validate()方法,很简洁,因为少了类型转换,这个工作由Struts2内建的类型转换器把请求参数转换为所须要的类型.
3结果
validateXxx()方法
一个Action可以包含多个处理逻辑
Java代码
publicclassUserActionextendsActionSupport
{
privatestaticfinallongserialVersionUID=1L;
privateStringusername;
privateintage;
privateDatebirthday;
privateListaihao;
publicStringaddUser()throwsException
{
//添加用户
return"success";
}
publicvoidvalidateAddUser()
{
if(null==username||"".equals(username))
{
addFieldError("username","用户名不能为空");
}
System.out.println("validateAddUser()验证方法");
}
publicStringgetUserList()
{
//取得所有用户
return"success";
}
publicvoidvalidateGetUserList()
{
//验证方法略...
System.out.println("validateAddUser()验证方法");
}
//--测试用
@Override
publicStringexecute()throwsException
{
return"success";
}
@Override
publicvoidvalidate()
{
if(age<0||200{
addFieldError("age","年领应在0-200之间");
}
System.out.println("~~~~~~基本~~~~~");
}
}
上面的就有三个处理业务的方法addUser(),getUserList(),execute()
addUser(),getUserList()方法分别有不同的验证方法:
validateAddUser(),validateGetUserList() ,也就是validateXxx()方法.
业务方法叫什么,验证方法就叫validate业务方法名(首字母大写)
这样,在执行某个业务方法,就会执行与它同名的验证方法,执行addUser()这前就会检查有没有validateAddUser()方法,有就执行之.
其实有了addUser(),getUserList() 这两方法,execute()就可以不要,但我为了说明一个多个validate方法执行的顺序,还是加上了.
不论执行 addUser()还是getUserList() 方法,validate()方法一定会执行,这是我们不想要的,有两解决方法:
1 不写execute(),也就不用写validate()方法
2 写execute(), 把validate()改名为validateExecute().
Struts2输入校验
(二)----验证框架
时间:
2009-03-2009:
31来源:
javaeyeelf8848点击:
533次
-
一文件名约定:
1)验证XML的文件名:
Action类名-validation.xml,并与相关的Action类放在一起.
2)当一个Action中有多个业务方法时:
Action类名-映射名-validation.xml
什么是映射名:
,name属性的值:
login就是映射名,千万注意,很多人写错
例子:
URL是:
http:
//localhost/struts/user_addUser.action
struts.xml是:
Xml代码
/user/success.jsp
/user/user.jsp
匹配后 实为
所以验证框架XML文件名是:
UserAction-user_addUser-validation.xml
二验证不通过时,会执行addFieldError()方法, 在JSP页面,要用fielderror/>显示信息.
关于addFieldError,请看第6讲:
6addActionError与addFieldError
三例子
Registration-validation.xml :
用于校验Registration.java类
Xml代码
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEvalidatorsPUBLIC"-//OpenSymphonyGroup//XWorkValidator1.0.2//EN""
--
非字段校验器
username
usernameshouldnotbeblank!
username
6
10
usernameshouldbebetween${minLength}and${maxLength}
-->
字段校验器-->
true
usernameshouldnotbeblank!
6
10
usernameshouldbebetween${minLength}and${maxLength}
passwordshouldnotbeblank!
6
10
passwordshouldbebetween${minLength}and${maxLength}
repasswordshouldnotbeblank!
6
10
repasswordshouldbebetween${minLength}and${maxLength}
ageshouldnotbeblank!
1
150
ageshouldbebetween${min}and${max}
birthdayshouldnotbeblank!
2001-01-01
2003-12-31
birthdayshouldbebetween${min}and${max}
graduationshouldnotbeblank!
2005-01-01
2007-12-31
graduationshouldbebetween${min}and${max}
四 Struts2内建的校验器有:
Xml代码