Struts ActionForm中自定义转换器Converter(简单易懂)

来源:互联网 发布:凤姐绿卡怎么拿的 知乎 编辑:程序博客网 时间:2024/05/19 03:16

步骤:
--实现Converter接口
--重写convert方法
--注册转换器(servlet方式或plugin方式)
----servlet方式
------web.xml文件配置servlet
----plugin方式
------struts-config.xml中配置plugin
-------------------------------------------------------------------------------------------
实例如下:

为java.util.Date自定义一个转换器

实现Converter接口的TestUtilDateConverter.java

package com.yulin.struts;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.beanutils.Converter;

public class TestUtilDateConverter implements Converter {

//重写convert方法
public Object convert(Class type, Object value) {
   if(value == null){
    return new Date();
   }
   if(value instanceof Date){
    return value;
   }
   if(value instanceof String){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    try {
     return sdf.parse((String)value);
    } catch (ParseException e) {
     e.printStackTrace();
    }
   }
   return null;
}

}


注册转换器(servlet方式或plugin方式)

以servlet方式注册转换器

package com.yulin.struts;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.commons.beanutils.ConvertUtils;

public class TestUtilDateConverterServlet extends HttpServlet {

@Override
public void init() throws ServletException {

//注册转换器
   ConvertUtils.register
(new TestUtilDateConverter(), java.util.Date.class);
}

}
----servlet方式--web.xml文件配置servlet

<servlet>
   <servlet-name>TestUtilDateConverterServlet</servlet-name>
   <servlet-class>com.yulin.struts.TestUtilDateConverterServlet</servlet-class>
   <load-on-startup>3</load-on-startup>
</servlet>

以plugin方式注册转换器

package com.yulin.struts;

import javax.servlet.ServletException;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;

public class TestUtilDateConverterPlugin implements PlugIn {

public void destroy() {
}

public void init(ActionServlet arg0, ModuleConfig arg1)
    throws ServletException {

   //注册转换器
   ConvertUtils.register
(new TestUtilDateConverter(), java.util.Date.class);
}

}

----plugin方式--struts-config.xml中配置plugin

<plug-in className="com.yulin.struts.TestUtilDateConverterPlugin"/>

原创粉丝点击