struts2--类型转换、数据校验

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值