• Struts2整理-----Struts2类型转换


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

    局部类型转换

    提供如下格式的文件 

    文件名:ActionName-conversion.properties  

    内容:多个propertyName(属性名)=类型转换器类(含包名),如  date=com.aumy.DateConverter 

    存放位置:和ActionName类相同路径。 

    开发步骤(这里以Action中Date类型数据为例):

    step1.

    首先编写一个转换类Converter1Action.java(继承DefaultTypeConverter),然后覆盖convertValue这个方法。

    package com.aaron.converter;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Map;
    
    import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
    
    public class DateTypeConverter extends DefaultTypeConverter {
    
        @Override
        public Object convertValue(Map arg0, Object value, Class toType) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
            try {
                if (toType == Date.class) {// 当字符串向Date类型转换时
                    String[] params = (String[]) value;// Request.getParameterValues()
                    return dateFormat.parse(params[0]);
                } else if (toType == String.class) {// 当Date转换成字符串时
                    Date date = (Date) value;
                    return dateFormat.format(date);
                }
            } catch (java.text.ParseException e) {
                e.printStackTrace();
            }
            return null;
        }
    
    }

    convertValue方法用于String类型数据转成自定义类型的处理方法

    参数: arg0---与Action有关的上下文信息

          value  ---从请求中获取的参数值

          toType ---要转换的目标类型

    step2.

    编写action

    package com.aaron.action;
    
    import java.util.Date;
    
    import com.aaron.model.User;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class Converter1Action extends ActionSupport {
    
        private Date birthday;
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            System.out.println("birthday=="+birthday);
            this.birthday = birthday;
        }
    
        public String excute() {
            ActionContext.getContext().getSession().put("birthday", birthday);
            return SUCCESS;
        }
    }

    step3. 

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

    如:Converter1Action-conversion.properties

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

    birthday=com.aaron.converter.DateTypeConverter

    全局类型转换

    提供如下格式的文件 

    文件名:xwork-conversion.properties 

    内容:多个“复合类型=对应类型转换器”项组成,如  java.Util.Date=com.aaron.conveterDateTypeConverter

    存放位置:src根目录下。 

    开发步骤:                   

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

    java.util.Date=com.aaron.conveterDateTypeConverter
  • 相关阅读:
    让一个 csproj 项目指定多个开发框架
    推荐近乎免费的调试神器——OzCode
    再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录
    .NET Core 和 .NET Framework 中的 MEF2
    将 WPF、UWP 以及其他各种类型的旧样式的 csproj 文件迁移成新样式的 csproj 文件
    .NET 中的轻量级线程安全
    卡诺模型(KANO Model)
    C#/.NET 匿名函数会捕获变量,并延长对象的生命周期
    迫不及待地体验了一把 C#8.0 中的可空引用类型(Nullable Reference)
    异步任务中的重新进入(Reentrancy)
  • 原文地址:https://www.cnblogs.com/haaron/p/5121852.html
Copyright © 2020-2023  润新知