zoukankan      html  css  js  c++  java
  • struts局部、全局类型转换器

    第01步:编写bean

    package com.self.bean;
    
    import java.util.Date;
    
    public class User {
        private Date birthday = null;
    
        public Date getBirthday() {
            System.out.println("获得-User:" + birthday);
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            System.out.println("设置-User:" + birthday);
            this.birthday = birthday;
        }
    
    }

    第02步:编写action类:

    package com.self.action;
    
    import com.self.bean.User;
    
    public class Transform {
    
        private User lilan;
    
        public Transform() {
        }
    
        public String showdata() {
            return "tsuccess";
        }
    
        public User getLilan() {
            return lilan;
        }
    
        public void setLilan(User lilan) {
            this.lilan = lilan;
        }
    
    }

    第03步:编写转换器类

    package com.self.conversion;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Map;
    
    import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
    
    /**
     * 自定义转换器:DataTransform-conversion.properties
     */
    /* 01--继承DefaultTypeConverter:默认转换器 */
    public class DataTransform extends DefaultTypeConverter {
        /* 02-- 重写convertValue方法 */
        @Override
        public Object convertValue(Map<String, Object> context, Object value, Class toType) {
            System.out.println("执行转换");
            /*03--调用SimpleDateFormat类方法进行格式转换*/
            /*04--以action类名加“-conversion.properties”为名建立properties文件
             * :Transform-conversion.properties
             * 再加入键值对:转换类型=转换器地址
             * :birthday=com.self.action.DataTransform
             */
            SimpleDateFormat dataFormat=new SimpleDateFormat("yyyyMMdd");
            try {
                if(toType==Date.class){//目标类型为Date类型
                    String[] params=(String[]) value;//接收的参数为数组类型,Request.getParameterValues();
                    System.out.println("目标:Date:"+params[0]);
                    return dataFormat.parse(params[0]);
                }else if(toType==String.class){//目标类型为String类型
                    Date date=(Date) value;
                    System.out.println("目标:String:"+date);
                    return dataFormat.format(date);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
    }

    第04步:编写property文件

      property文件:放在action同级目录

      property命名:Transform-conversion.properties(action类名-conversion.properties)

    lilan.birthday=com.self.conversion.DataTransform

      lilan:指的是action里面的对象

      lilan.birthday:对象.属性=转换器

    第05步:配置struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
        <constant name="struts.action.extension" value="do"/>
        
        <package name="transform" namespace="/" extends="struts-default">
            <action name="list_*" class="com.self.action.Transform" method="{1}">
                <result name="tsuccess">
                    /outdata.jsp
                </result>
            </action>
        </package>
    </struts>

    第06步:编写数据输入界面

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <html>
      <body>
          <form action="list_showdata.do">
              日期:<input name="lilan.birthday" type="text" value="20150120" />
              <BR>
              输入格式01为:20150120
              <BR>
              输入格式02为:2015-01-20
              <BR>
              <input type="submit" value="提交">
          </form>
      </body>
    </html>

    第07步:编写数据显示界面

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <html>
      <body>
        ${lilan.birthday }
      </body>
    </html>

    /*****************以上是局部类型转换器,以下是全局类型转换器********************/

    第01步:将property文件重命名为(xwork-conversion.properties)

    第02步:将property文件移到src目录下

    第03步:property配置:(这里代表的是,工程下所有Date类型,都使用这个转换器)

    java.util.Date=com.self.conversion.DataTransform
  • 相关阅读:
    MATLAB实现的车牌定位系统
    机器学习公开课备忘录(一)回归问题
    localStorage cookie的增删改查
    cookies,sessionStorage和localStorage的区别(浏览器缓存的区别)
    提升页面性能的方法
    get和post的区别
    ajax jsonp axios fetch
    vue项目创建
    (转)如何使用Log4net创建日志及简单扩展
    C# TSC打印二维码和条形码
  • 原文地址:https://www.cnblogs.com/zjsy/p/4293555.html
Copyright © 2011-2022 走看看