博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在struts1.x中设置对java.util.Date类型支持
阅读量:4048 次
发布时间:2019-05-25

本文共 2306 字,大约阅读时间需要 7 分钟。

由于Struts的支持包commons-beanutils.jar里面的转换器并不支持java.util.Date类型(但是支持java.sql.Date、java.sql.Time、java.sql.Timestamp类型),所以我们需要通过编程来处理此问题。

1、编写转换类
package cn.steven.web.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.apache.commons.beanutils.Converter;
public class DateConverter implements Converter {
    private static SimpleDateFormat df = new SimpleDateFormat();
    private static Set<String> patterns = new HashSet<String>();
    static {
       DateConverter.patterns.add("yyyy-M-d");
       DateConverter.patterns.add("yyyy-M-d H:m");
       DateConverter.patterns.add("yyyy-M-d H:m:s");
       DateConverter.patterns.add("yyyy-M-d H:m:s.S");
    }
    public Object convert(Class type, Object value) {
 
       if (value == null) {
 
           // 如果为空,返回
 
           return null;
       } else if (value instanceof String) {
           Object dateObj = null;
           Iterator it = patterns.iterator();
           while (it.hasNext()) {
              try {
                  String pattern = (String) it.next();
                  df.applyPattern(pattern);
                  dateObj = df.parse((String) value);
                  break;
              } catch (ParseException ex) {
                  // 不做处理继续下一次迭代
              }
           }
           return dateObj;
       } else {// 如果类型不是字符串,不转换
           System.out.println("Date format is error!");
           return null;
       }
    }
}
2、编写插件类
package cn.steven.web.util;
import javax.servlet.ServletException;
import org.apache.commons.beanutils.BeanUtils;
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 DateConverterPlugin implements PlugIn {
    public void destroy() {
       // 把注册移除
       ConvertUtils.deregister();
    }
    public void init(ActionServlet arg0, ModuleConfig arg1)
           throws ServletException {
       // 注册轮换器
       ConvertUtils.register(new DateConverter(), java.util.Date.class);
    }
}
3、注册插件(在struts配置文件中设置)
<plug-in className="cn.steven.web.util.DateConverterPlugin" />
4、应用代码示例(两种方法任选)
<html:form action="/actionpathname">
日期类型 : <input name="date"
              value="<fmt:formatDate value='${dForm.date}' pattern='yyyy-MM-dd HH:mm:ss.SSS' />" />
</html:form>
-----------------------------------------------------------------------------------------------------
<html:form action="/d">
日期类型 : <input name="date"
              value="<bean:write name='dForm' property='date'
format='yyyy-MM-dd HH:mm:ss.SSS' />" />
</html:form>
祝大家使用愉快!

转载地址:http://tefci.baihongyu.com/

你可能感兴趣的文章
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
Oracle 物化视图
查看>>
PHP那点小事--三元运算符
查看>>
解决国内NPM安装依赖速度慢问题
查看>>
Brackets安装及常用插件安装
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>