由于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>
祝大家使用愉快!
在struts1.x中设置对java.util.Date类型支持
最新推荐文章于 2021-04-20 12:10:27 发布