struts2的类型转换:
基本类型转换
boolean 和 Boolean、char和 Character、int 和 Integer、long 和 Long、float 和 Float、double 和 Double
如果定义age是int类型,输入的值比如是aa,不是int类型,出现类型转换的错误,
返回视图名称 "input",可以在result标签中配置name名称为input,来进行页面的回显
自定义类型转换器
把struts2里面默认的Date的格式 yyyy-MM-dd修改为 yyyy/MM/dd
实现自定义类型转换器有三种
(1)一般都是继承 DefaultTypeConverter类实现
(2)注册类型转换器
局部注册:1、:如果使用属性封装数据
在action所在的包里面,创建文件 命名规范 :action类名-conversion.properties
在创建的文件里面 要转换的名称=自定义类型转换器的包类路径
2、:使用模型驱动封装数据
在action所在的包里面,创建文件 命名规范:javabean类名称-conversion.properties
在创建的文件里面 要转换的名称=自定义类型转换器的包类路径
全局注册
在src下面创建文件 命名规范:xwork-conversion.properties ,
格式 : 待转换的类型=类型转换器的全类名
java.util.Date=cn.itcast.utils.MyDateConverter
数据校验:
1、手动编写校验代码:
在action类继承ActionSupport类;重写validate()方法[此方法中有一个this.addFieldError(属性名,"错误信息")];在jsp中引入struts2标签,<s:fieldError/>可以获得错误信息的内容;
2、xml配置文件校验:【开发常用】
在要校验的action所在的包里面,创建xml文件 命名规范:action类名称-validation.xml
xml约束的引入:xwork-core包-->xwork-validator-1.0.3.dtd中的约束头。拷贝后从新去下空格。
校验规则:xwork-core包-->xwork2.validator.validators包-->default.xml 中有所有的校验规则,也就是下面的type类型
<validators>
<field name="要校验数据名称">
<field-validator type="校验的规则">
<message>错误提示的信息</message>
</field-validator>
</field>
</validators>
在jsp中获取校验的提示的信息,使用struts2标签 <s:fielderror/>
3、对action方法的校验:
创建的xml的文件的命名 命名规范 action类名称-配置文件中action的name的值-validation.xml;例如: AddCusotmerAction-addcustomer-validation.xml
自定义校验规则:(开发中很少用到)
1、必须实现 Validator接口,通常自定义校验器 继承 ValidatorSupport 和 FieldValidatorSupport
ValidatorSupport 针对不是一个输入字段 (两个密码一致)
FieldValidatorSupport 针对是一个输入字段 (用户名非空)
2、注册校验器:
在工程的src下新建validators.xml文件中引入 xwork-core-2.3.7.jar 中 xwork-validator-config-1.0.dtd 的约束
3、使用校验器:
在Action所在包 创建Action类名-validation.xml
编写一个类继承FieldValidatorSupport :
public class MyAgeValidator extends FieldValidatorSupport {
public void validate(Object obj) throws ValidationException {
// 获得字段名称:
String name = this.getFieldName();
// 获得字段的值:
Object value = this.getFieldValue(name, obj);
if(value instanceof Integer){
int age = (Integer) value;
if(age < 0){
this.addFieldError(name, obj);
}
}
}
}
* 注册校验规则:
* 在src下创建一个validators.xml
* 引入一个DTD:
* xwork-core-2.3.7.jar下的xwork-validator-config-1.0.dtd
* 配置:
<validators>
<validator name="aaa" class="cn.itcast.action.demo6.MyAgeValidator"></validator>
</validators>
* 使用校验规则:
<validators>
<field name="age">
<field-validator type="aaa">
<message>年龄不能为负数!</message>
</field-validator>
</field>
</validators>