zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Tomcat 三种运行方式
    MariaDB介绍
    Nginx 平滑升级
    代理命令 proxy_pass 详解
    Nginx 和 Tomcat 负载均衡
    基于Apache和tomcat实现负载均衡
    centos7 通过源码编译的方式安装和配置Apache
    基于nginx结合openssl实现https
    HTTP 和 HTTPS 区别
    linux系统中修改别名配置文件,构建命令别名
  • 原文地址:https://www.cnblogs.com/haaron/p/5121852.html
Copyright © 2011-2022 走看看