您的位置:首页 > 编程语言 > Java开发

Struts2_自定义转换器

2017-12-14 23:48 148 查看
下面这个是自定义的时间类型的转换器

Struts2.xml配置如下:这个和转换器没有直接的关系

<package name="date" extends="struts-default">
<action name="aaa_*" class="com.sxt.action.DateAction"
method="{1}">
<result name="success">
/ajax.jsp
</result>
<allowed-methods>date</allowed-methods>
</action>
</package>


前台jsp界面如下:和自定义转换器没有什么关系

<body>
<form action="aaa_date">
<input type="text" name="date"><br>
<input type="submit" value="提交">
</form>
</body>


要想使用自定义转换器的话要在src下面要建一个文件(如果是maven的话要在src/main/resources下面建),xwork-conversion.properties 这个是文件的名字,文件里面配置
java.util.Date=com.sxt.converter.DateConverter
这个.properties后缀的文件会自动在里面生成key-value的结构,这个里面配置的是所有的要在前台发往后台转成java.util.Date的格式的属性全部进入com.sxt.converter.DateConverter这个类里面

DateConverter类的配置如下:

public class DateConverter extends DefaultTypeConverter {

@Override
public Object convertValue(Object value, Class toType) {
//这个是要转的格式,这个可以继续加
String[] pattern = new String[] { "yyyy-MM", "yyyyMM", "yyyy/MM",
"yyyyMMdd", "yyyy-MM-dd", "yyyy/MM/dd", "yyyyMMddHHmmss",
"yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd'T'HH:mm",
"yyyy-MM-dd'T'HH:mm:ss", "yyyy/MM/dd HH:mm:ss",
"yyyy年MM月dd日 HH时mm分ss秒", "yyyy年MM月dd日" };
try {
//如果你要转的是date日期类的话就进入这个里面
if (toType == Date.class) {
//把前台发过来的要转的值强转成String的数组,然后取第一个下标
String[] ss = (String[]) value;
//转成日期
Date d = DateUtils.parseDate(ss[0], pattern);
//别忘了返回出去
return d;
}
} catch (ParseException e) {
e.printStackTrace();
}
return super.convertValue(value, toType);
}
}


这个必须要继承DefaultTypeConverter类

这样所有的有关于日期的,会全部进入这个里面进行转换,然后再自动赋值到后台Java的date数据上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: