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

 

你可能感兴趣的:(struts)