自定义Struts转化器

在Struts开发中经常可以发现,用户提交的请求数据中,基本数据类型和java.sql.Date或java.sql.Time类型都能被封装到ActionForm类中,在页面可以直接取到用户输入的数值。唯有java.util.Date的数据不能封装,究其原因就是在提交请求时,RequestProcessor类在进行数据收集时没有将java.util.Date类型的数据进行转换。所以查看Struts源代码可以发现我们要做的就是简单的两件事

 

 

第一,如源代码中装换示例一样,自定义一个类实现org.apache.commons.beanutils.Converter接口

    如:

       /**
 * 自定义的java.util.Date的类型转换器
 * @author qiujy
 */
public class UtilDateConverter implements Converter {
 
 public static final String DATE_PATTERN = "yyyy-MM-dd";

 /* (non-Javadoc)
  * @see org.apache.commons.beanutils.Converter#convert(java.lang.Class, java.lang.Object)
  */
 @Override
 public Object convert(Class arg0, Object arg1) {
  
  Object obj = null;
  if(java.util.Date.class == arg0){
   if(arg1 != null && arg1 instanceof String){
    DateFormat df = new SimpleDateFormat(DATE_PATTERN);
    
    try {
     obj = df.parse((String)arg1);
    } catch (ParseException e) {
     e.printStackTrace();
    }
    
   }
  }
  
  return obj;
 }

}

第二,在web项目进行部署时应该像源代码在ActionServlet中一样做一下注册的工作

      要实现注册那么必须写一个注册的Servlet类;

public class UtilDateConverterRegisterServlet extends HttpServlet {

 public void init() throws ServletException {
     ConvertUtils.register(new UtilDateConverter(), java.util.Date.class);
   }

}

  

  然后在web.xml配置中将注册的Servlet类设定为自动启动但级别要比ActionServlet低些

 

   <servlet>
    <servlet-name>UtilDateConverterRegisterServlet</servlet-name>
    <servlet-class>com.qiujy.web.common.UtilDateConverterRegisterServlet</servlet-class>
   <load-on-startup>5</load-on-startup>
  </servlet>

 

 这样,一个自定义的Struts转换器就做好了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值