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

原创 2015年11月19日 16:08:24

测试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" />




版权声明:本文为博主原创文章,未经博主允许不得转载。

SSH:Struts1框架(动态ActionForm)

使用ActionForm可以给开发者在处理HTML表单时带来极大的帮助,它简化了代码的编写,并提供了自动的数据验证。但是,ActionForm也存在几个非常明显的缺点。  首先,如果ActionFo...

深入浅出学习Struts1框架(十一)-利用ActionMapping来创建ActionForm

今天主要是讲解ActionServlet中的一个方法processActionForm,当我们在截取字符串,再根据字符串取得ActionMapping(这是前两篇文章中介绍的)之后,我们就要用利用Ac...
  • lfsf802
  • lfsf802
  • 2012年05月03日 10:02
  • 9103

深入浅出学习Struts1框架(十二)-把ActionForm的数据放到Mapping

上一篇博客主要是讲解ActionServlet中的一个方法processActionForm,当我们在截取字符串,再根据字符串取得ActionMapping之后,我们就要用利用ActionMappin...

深入浅出学习Struts1框架(十二)-把ActionForm的数据放到Mapping

上一篇博客主要是讲解ActionServlet中的一个方法processActionForm,当我们在截取字符串,再根据字符串取得ActionMapping之后,我们就要用利用ActionMappin...
  • lfsf802
  • lfsf802
  • 2012年05月11日 11:00
  • 6154

Struts1 ActionForm 工作原理

actionform工作原理 1.检查action映射,确定action的配置对应的actionform的映射 2.根据name属性查找formbean的配置信息 3.检查actio...

struts1 中ActionForm赋值原理

在struts1中,没有struts2封装得好,对简单数据类型没有什么不一样,但是对于一个对象,列表等要麻烦一点,不过只要知道struts1底层是怎么对数据进行赋值的话,操作起来也比较简单。  ...

SSH:Struts1框架(几种常用的Action)

除了基本的Action 之外, Struts 还提供了几个其他类型的Action ,这些Action 大大 丰富了Struts 的功能。下面介绍如下儿个常用的Action 。 • DispatchAc...

SSH:Struts1框架(简介)

Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。S...

在struts1中使用DispatchAction对应多个ActionForm,实现写一个Action实现增删改查操作---一个Action处理多个操作的能力

先来了解DispatchAction类: 原始的配置action都是使用一个Action类实现一个功能,当工程项目很大的时候,Action类数目会很多,导致代码文件膨胀,这就增加了该项目后期的维护难度...
  • lycyl
  • lycyl
  • 2015年05月19日 11:24
  • 1264

Struts1的ActionForm中文乱码问题

在页面提交中文时出现乱码问题是由于Struts框架直接把表单数据发送给了ActionForm,所以这里面没有对HttpRequestServlet进行SetCharacterEncoding,所以默认...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH:Struts1框架(ActionForm注册类型自动转换)
举报原因:
原因补充:

(最多只允许输入30个字)