SSH:Struts1框架(ActionForm注册类型自动转换)

测试ActionForm注册类型自动转换

 * 一般的数据类型都可以自动进行转换;

* boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他清空转换成false
 * java.sql.Date 默认的转换格式是 yyyy-MM-dd;
 * java.util.Date 默认不可以转换;
 * 自定义转换器的实现步骤:
  1. 定义一个实现了Converter接口的类,并且实现convert方法;
  2. 定义一个servlet来注册转换器,注册转换器引用ConvertUtils类的静态方法register(转换器,转换类型);
   * ConvertUtils.register(new ConvertTestAction(), java.util.Date.class);
  3. 配置servlet时注意配上这个<load-on-startup>5</load-on-startup>值要大于0,因为这个servlet要求在tomcat启动时初始化;
  4. 第二种方法注册转换器通过实现PlugIn接口,在struts-config.xml中配置上<plug-in className="com.gzbb.dynaForm.action.ConvertTestPlus"></plug-in>
 * 如果对应的Converter不明白,可以查看相应的类文件 org.apache.commons.beanutils.Converter;
              org.apache.commons.beanutils.converters.*;

实现方法一:

servlet初始化时注册

1.     实现org.apache.commons.beanutils.Converter接口,

         @Override

    public Object convert(Class type, Object value) {

        System.out.println("UtilDateConvert.value="+value);

        if(value==null){

            return value;

        }

        if(value instanceof Date){

            return value;

        }

        Date d=null;

        if(value instanceof String){

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

            try {

                d = sdf.parse(value.toString());

            } catch (ParseException e) {

                e.printStackTrace();

            }

        }

        return d;

    }

 

2.写一个servlet注册转换器,并实现init()方法

       @Override

    public void init() throws ServletException {

        //注册转换器

       ConvertUtils.register(new UtilDateConvert(), Date.class);

    }

3在web.xml中配合servlet

<servlet>

    <servlet-name>UtilDateConverterInitWithervlet</servlet-name>      <servlet-class>com.zsw.struts.UtilDateConverterInitWithervlet</servlet-class>

    <!-- 使tomcat启动时初始化 -->

    <load-on-startup>3</load-on-startup>

  </servlet>

 

实现方法二:

使用PlugIn注册,

1.实现org.apache.commons.beanutils.Converter接口,     

@Override

    public Object convert(Class type, Object value) {

        System.out.println("UtilDateConvert.value="+value);

        if(value==null){

            return value;

        }

        if(value instanceof Date){

            return value;

        }

        Date d=null;

        if(value instanceof String){

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

            try {

                d = sdf.parse(value.toString());

            } catch (ParseException e) {

                e.printStackTrace();

            }

        }

        return d;

    }

2.实现org.apache.struts.action.PlugIn接口。

    @Override

    public void init(ActionServlet arg0, ModuleConfig arg1)

           throws ServletException {

       //注册转换器

       ConvertUtils.register(new UtilDateConvert(), Date.class);

    }

3.在struts-config.xml中配置:

<plug-in className="com.zsw.struts.UtilDateConverterInitWithPlugin" />




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值