zoukankan      html  css  js  c++  java
  • struts2自定义日期类型转换器

    在java web表单中提交的数据难免会有日期类型,struts2支持的日期类型是yyyy-MM-dd,如果是其他格式,就需要自己进行转换。比如yy-MM-dd

    要完成自己定义的转换需要完成。

    主要的类是:StrutsTypeConverter,该类是抽象类,需要实现两个方法

    1)public Object convertFromString(Map context, String[] values, Class toClass) 

    2)public String convertToString(Map context, Object o)

    其中第二个转换成字符串的不常用。

    步骤:

    1 定义转换器类

    2 进行配置,局部或全局

    1、定义转换器类

    定义一个 DateConverter 类继承自 StrutsTypeConverter,实现两个虚方法

    @Override
        public Object convertFromString(Map context, String[] values, Class toClass) {
            SimpleDateFormat[] sdfs = { new SimpleDateFormat("yyyyMMdd"),
                                        new SimpleDateFormat("yyyy/MM/dd"),
                                        new SimpleDateFormat("yyyy,MM,dd")};
            //转换类型不是日期类型
            if(toClass != Date.class){
                return null;
            }
            //转换值是空或者长度为0
            if(values == null || values.length==0){
                return null;
            }
            String strDate = values[0];
            Date birthday = null;
            for(int i=0;i<sdfs.length; i++){
                
                try {
                    birthday = sdfs[i].parse(strDate);
                    return birthday;
                } catch (ParseException e) {
                    continue;
                }
                
            }
            return birthday;
        }
    
        @Override
        public String convertToString(Map context, Object o) {
            // TODO Auto-generated method stub
            return null;
        }

    2 配置,分两种。一种是局部配置,另一种是全局配置

    2.1)应用于特定Action类的类型转换器 在特定Action类的同一目录下创建一个名为ActionClassName-conversion.properties的属性文件

    例如:我的Action类是public class AdminAction extends ActionSupport,对该类转换的属性文件名是:AdminAction-conversion.properties

    配置格式:属性.属性 = 转换器类全名

    例如:

    Admin类

    public class Admin {
        private String aname;
        private String apasswd;
        private Date abirthday;
        
        public Admin() {
            // TODO Auto-generated constructor stub
        }
    
        public String getAname() {
            return aname;
        }
    。。。。。

    AdminAction类

    public class AdminAction extends ActionSupport {
        private Admin admin;
        
        public Admin getAdmin() {
            return admin;
        }
    
        public void setAdmin(Admin admin) {
            this.admin = admin;
        }
    
        public String login(){
    。。。

    表单页面

    配置内容:admin.abirthday=com.baidu.converter.DateConverter

    2.2) 全局配置:在src目录下创建xwork-conversion.properties

    配置格式:类型全名=转换器类全名

    上面例子就是:java.util.Date=com.baidu.converter.DateConverter

  • 相关阅读:
    java图片压缩处理
    RocketMQ启动broker提示 错误:找不到或无法加载主类
    Docker
    openresty (nginx+lua)实现请求过滤
    mybatis-3.4.0 Date类型非空字符串判断bug
    ClickHouse 官方文档
    Flume 搭建遇到的问题
    Hadoop与HDFS
    关于Linux
    mybatis insert 返回主键
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6701402.html
Copyright © 2011-2022 走看看