自动の转化!次回合的战斗:验证格式!

好了让我们愉快的开始第二回合
这一回合的内容是页面上的类型转换
主要的呢
先说个简单的

Struts2实现的自动类型转换
1:所有基本数据类型的转换
2:本地日期格式(YYYY-MM-DD) 自动转为date类型
3:把String【】数组类型转成了使用逗号空格间隔的字符串

Struts不能实现的类型,就需要我们自己转了
我要写的就是自己转类型

首先呢,是在web下,写个类,类名就叫myConverter,
要让这个类继承 extends StrutsTypeConverter这个类

类里面有两个方法。
一个是String转date
一个是date转String
现在写一下实现的方法

Public class MyConverter extends StrutsTypeConverter
{
Private SimleDateFormat sdf = new SimpleDateFromat(“mm/dd/yyyy”);
//arg1:被转换的类型 arg2:转换成什么类型
Public Object ConvertFromString(Map arg0,String[] arg1,class arg2)
{
If(arg1.length==0||arg1==null)
{
Return null;
}
String date = arg1[0];
If(arg2==java.util.Date.class)
{
Try
{
Return sdf.parse(date);
}
Catch(ParseException e)
{
e.printStack Trace();
}
}
Return null;
}
}
Public String convertToString(Map arg0,Object arg1)
{
If(arg1 instanceof Date)
{
Date date=(Date)arg1;
Return sdf.format(date);
}
Return null;
}
}

好了 开始怎么配置吧
有两个方法配置,一个就是配置这个方法的,
在这个实体类包写:
(假如写birthday) birthday-conversion.properties
怎么就记不下来这个英文呢
Properties properties properties properties properties properties properties properties properties properties properties properties properties properties properties properties
里面写着:birthday=com.qianfeng.
第二个方法:是在src下 配置文件
好了 关门了 明天写
好了 明天到了 ,可是我却不记得昨天我写到哪了

想起来了想起来了(经过了看源代码)
写一个配置文件
名字叫后悔~
不对, (全局的,在src下)
Xwork-conversion.properties
java.util.Date=com.qianfeng.web.action.converter.MyConverter


下面开始验证,划重点,敲黑板
1编程式验证
(硬解码)
Struts内部封装了一个map,这个map的键就是页面上的name属性的值
Map的值就是验证结果信息
重写ActionSupport中的validate方法,把验证信息存在map中
addFieldError方法用来验证信息存储到map中

默认在执行该action的任何动作方法之前都进行验证
怎么让不需要验证的方法,不执行validate?
1:使用注解:在不需要执行验证的动作方法上加入注解@SkipValidation
2:改变验证方法的名称:validate+动作方法名(首字母大写)

注意 必须继承actionsupport

@Override
public void validate()
{
if(“”.equals(user.getUsername()) || user.getUsername()==null)
{
//把验证信息存到map中
addFieldError(“username”,”用户名不为空”);
}
if(StringUtils.isEmpty(user.getUsername()))
{
addFieldError(“username”,”用户名不为空”);
}
}

public void validateRegist()
{
if(StringUtils.isEmpty(user.getUsername()))
{
addFieldError(“username”,”用户名不为空”);
}
}

ok
好了测试成功 记得要写input反馈才可以哦~

第二种方式
声明式验证:
在动作类所在的包下创建xml 文件,命名规范:动作类名-validation.xml
1创建文件:动作类名-validation.xml
默认在执行动作类任何一个方法都要执行
解决方式:
1:使用注解,再不需要执行验证的动作方法下加入注解@SkipValidation
2:改变xml文件的名称:动作类名-动作名-vlidation.xml
2 加入dtd约束:xwork-core-2.3.15.3JAR包下找到 xwork-validator-1.03dtd

我把验证打过来了这破玩意找的太费事了
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  "-//Apache Struts//XWork Validator 1.0.3//EN"
  "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

猜你喜欢

转载自zhanghecheng.iteye.com/blog/2339580