• struts2自定义转换器


    Struts2自定义类型转换器分为局部类型转换器和全局类型转换器

    (1)局部类型转换器 
    如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用。

    以下为局部类型转换器的开发步骤

    a.首先要写一个类来继承StrutsTypeConverter

    b.然后覆盖convertFromString(),convertToString()这个方法,在里面进行数据转型 

    c.在action类所在的包下放置ConversionAction-conversion.properties文件,ConversionAction是类名,后面的-conversion.properties是固定的写法, 
    如:ConversionAction-conversion.properties

    d.Properties文件里面的内容为:属性名称=类型转换器的全类名(既包名.类名)

    如:date=cn.happy.conversion.DateConversion

    创建ConversionAction类

    public class ConversionAction extends ActionSupport {
        private Date date;
    
        @Override
        public String execute() throws Exception {
            return SUCCESS;
        }
    
        public Date getDate() {
            return date;
        }
    
        public void setDate(Date date) {
            this.date = date;
        }

    编写自定义转换器代码

    public class DateConversion extends StrutsTypeConverter {
        private static final List<SimpleDateFormat> list=new ArrayList<SimpleDateFormat>();
        static {
            list.add(new SimpleDateFormat("yyyy-MM-dd"));
            list.add(new SimpleDateFormat("yyyy年MM月dd日"));
            list.add(new SimpleDateFormat("yyyy/MM/dd"));
            list.add(new SimpleDateFormat("yyyy.MM.dd"));
        }
        public Object convertFromString(Map map, String[] strings, Class aClass) {
            //获取日期的字符串
            String date=strings[0];
            for(SimpleDateFormat item:list){
                try {
                    //把String类型转为Date
                    Date parse = item.parse(date);
                    return parse;
                } catch (ParseException e) {
                    continue;
                }
            }
            //如果遍历完毕后扔没有转换成功,表明出现转换异常
           throw new TypeConversionException();
        }
    
        public String convertToString(Map map, Object obj) {
            Date date=(Date)obj;
            //输出格式
            return new SimpleDateFormat("yyyy-MM-dd").format(date);
        }
    }

    jsp页面代码

     <form action="conversion" method="post">
            日期<input name="date">
            <input type="submit" value="提交">
        </form>

    struts.xml配置

     <action name="conversion" class="cn.happy.action.ConversionAction" >
                <!--转换失败,进入login.jsp页面-->
                <result name="input">login.jsp</result>
                <result name="success">sucess.jsp</result>
            </action>

    (2)全局类型转换器 
    如果业务需求所有的日期都要转换,则可以使用全局类型转换器,只要在src根目录下面放置xwork-conversion.properties文件,并且properties文件中的内容为: 
    待转换的类型=类型转换器的全类名 

    java.util.Date=cn.happy.conversion.DateConversion

                   


                           

  • 相关阅读:
    python3获取文件夹大小
    git master分支被污染,dev是最新稳定的
    优化经验杂记
    kong
    prometheus
    C# 线程执行带参方法的几种写法(ThreadStart,delegate (),()=>)
    MySql字符集utf8mb4和utf8区别
    程序员必备的一些数学基础知识
    hbase统计表的行数的三种方法
    Flink实时计算pv、uv的几种方法
  • 原文地址:https://www.cnblogs.com/chuangege/p/6538365.html
Copyright © 2020-2023  润新知