Struts2 类型转换

基于字段的转换:

1、写一个类,继承DefaultTypeConverter,覆盖convertValue(Object value, Class toType)

 1 public Object convertValue(Object value, Class toType) {
 2         if(value==null || toType==null || toType!=java.util.Date.class )
 3         {
 4             return false;
 5         }
 6         if(value instanceof java.lang.String[])
 7         {
 8             String[] strs=(String[])value;
 9             if(strs[0]!=null && strs[0].length()>0)
10             {
11                 try {
12                     SimpleDateFormat sdf=new SimpleDateFormat("yyyy-DD-mm");
13                     return sdf.parse(strs[0]);
14                 } catch (ParseException e) {
15                     /*
16                      * 在struts2框架里,自定义的类型转换器,
17                      *  如果我们不手动抛出异常,struts2框架只捕获异常,但是并不抛出。
18                      *  所以框架就会认为类型转换器转换成功,转向成功页面。
19                      */                    
20                     throw new RuntimeException(e);
21                 }
22             }
23         }
24         return new Date();
25     }

 2、在调用转换转换类的文件夹下,新建一个:类名_conversion.properties,里面配置key=  要转换的类   value=  转换类的全名(cn/.../..conver..)

  

1 birthday=cn.test.type.DataConver

3、我们知道,有可能转换失败,所以我们需要显示转换失败信息

  <%@ taglib uri="/struts-tags" prefix="s" %>

  <s:fielderror fieldName="user.birthday"/>

  *但是这样的失败信息是英文,所以我们需要显示为中文信息在类文件夹下,新建一个xml文件,里面设置

  xwork.default.invalid.fieldvalue=提示信息 "{0}".({0}代表字段)

  如果要针对字段进行个性化提示,可以在下面添加:

  invalid.fieldvalue.字段名=提示信息

  *将xml注册到struts.xml中

  

1 <!-- 
2         配置所有资源文件,省略后缀名,如果配置多个资源文件时,用","隔开。不仅是国际化资源文件
3         * 类型转换器的错误提示资源文件(省略后缀名)
4      -->
5     <constant name="struts.custom.i18n.resources" 
6             value="cn.test.type.converter,cn.itcast.i18n.resources">
7     </constant>

还可以基于类的转换:转换文件不变,在类的文件夹下新建xwork-conversion.propertices文件,在里面配置

要转换的类型(java.utiils.xxx)=转换类的全路径(cn.x.xxx)

原文地址:https://www.cnblogs.com/liuwt365/p/4206818.html