–在对应的Action类所在的包中新建 ActionClassName.properties文件,ClassName即为包含着输入字段的Action类的类名
–在属性文件中添加如下键值对: Invalid fieldvalue.fieldName=errorMsg
1). 为什么需要自定义的类型转换器 ? 因为 Struts 不能自动完成 字符串 到 引用类型 的 转换.
2). 如何定义类型转换器:
I. 开发类型转换器的类: 扩展 StrutsTypeConverter 类.
II. 配置类型转换器:
有两种方式
①. 基于字段的配置:
> 在字段所在的 Model(可能是 Action, 可能是一个 JavaBean) 的包下, 新建一个 ModelClassName-conversion.properties 文件
> 在该文件中输入键值对: fieldName=类型转换器的全类名.
> 第一次使用该转换器时创建实例.
> 类型转换器是单实例的!
②. 基于类型的配置:
> 在 src 下新建 xwork-conversion.properties
> 键入: 待转换的类型=类型转换器的全类名.
> 在当前 Struts2 应用被加载时创建实例.
简单的自定义类型转换器实现:
假如有如下action
public class ProductAction { private int id; private String name; private Date createtime; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } public String execute(){ return "success"; } }
在页面输入的createtime的时间字符串需要被转换成Date类型,自定义类型转换器如下:
public class DateConvert extends StrutsTypeConverter { private DateFormat dateFormat; public DateFormat getDateFormat() { if(dateFormat==null){ ServletContext context=ServletActionContext.getServletContext(); String pattern=context.getInitParameter("pattern"); dateFormat= new SimpleDateFormat(pattern); } return dateFormat; } @Override public Object convertFromString(Map map, String[] values, Class typeClass) { if(typeClass==Date.class){ if(values!=null && values.length>0){ try { return getDateFormat().parse(values[0]); } catch (ParseException e) { e.printStackTrace(); } } } return values[0]; } @Override public String convertToString(Map map, Object o) { if(o instanceof Date){ return getDateFormat().format(o); } return null; } }上述Date转换器中的转换后的时间格式可以在web.xml中进行配置,这样可以做到对时间格式的动态配置,在web.xml文件中加入如下配置即可:
<context-param> <param-name>pattern</param-name> <param-value>yyyy-MM-dd hh:mm:ss</param-value> </context-param>配置上述的自定义类型转换器,有2种方式:
1、通过字段名来配置:
在ProductAction所在的包下新建配置文件 :ProductAction-converion.properties ,内容如下:
createtime=com.elgin.convert.DateConvert
在src下新建配置文件名为:xwork-conversion.properties ,内容如下:
java.util.Date=com.elgin.convert.DateConvert