本文共 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/