学习重点就是怎么使用校验:struts2中的校验都可以分为两类:针对全部方法、针对某个方法。
1、手动编程校验
校验需要用到struts2的validate()方法,就要自己的action继承ActionSupport,重写校验方法validate。
例如:public MyAction extends ActionSupport{
String tel; //手机号
....//getter setter
public String update(){
return "success";
}
public void validate(){
if(this.tel==null || "".equals(this.tel.trim())
this.addFieldError("tel","不能为空‘);
else if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.tel).matches())
//正则表达式^1[358]\d{9}$ 第一位是1,第二位是358其中一个,后面9个数字,因为java对\的处理所以写成\\d $结束
this.addFieldError("tel","格式不正确‘);
}
}
如果校验不正确会返回到input页面:在页面上使用<s:fielderror />输出提示信息。
如果对某个方法update()校验的话,把校验方法写成pulic void validateUpdate(){ }即可。就只校验update方法。
如果即有validate(){ } 又有validateUpdate(){ } ,那么先调用后者validateUpdate再调用前者validate。
2、xml方式校验
在与要校验的action同一路径下,建立简写类名-validation.xml.
如public MyAction{ } 就建立MyAction-validation.xml
内容增加:
<validators>
<field name="tel">
<field-validator type="requiredString">
<param name="trim">true</param>
<message>不能为空</message>
</field-validtor>
<field-validator type="regex">
<param name="expression">![CDATA[^1[358]\\d{9}$]]</param>
<message>格式不正确</message>
</field-validtor>
</field>
</validators>
对某个方法的action的xml要命名为;类名-action名-validation.xml
如果两个xml判断冲突,以方法的为准。
3、关于xxx.properties
这个类型的文件存放的数值是unicode类型,文本编辑界面下都是看不懂的。所以在输入数值时候最好通过add。edit按钮编辑,myeclipse自动转换为unicode格式。
也可以通过jdk命令转换:native2ascii 原文件.properties 目标文件.properties
4、struts2标签jsp页面取值
只有在action中出现的属性,才能在<s:property value="属性名">直接使用,或者使用${属性名}
如果不是在action中出现的,而是其它方式(如request)的属性,则struts2标签的话需要用#取值
<s:property value="#request.属性名">
详细与ValueStack的内容有关,可以再研究下。