BeanUtils中有一個ConvertUtils類,這個工具類的職能是在字符串和指定類型的實例之間進行轉(zhuǎn)換。
例如:當需要將一個完整的日期字符串,轉(zhuǎn)換成我們需要的類型時,就需要使用到這個工具類。
1、首先需要自己寫一個實現(xiàn)了Converter接口的類。
2、實現(xiàn)public Object convert(Class clazz, Object obj)方法。
3、第一個參數(shù)是想把字符串轉(zhuǎn)換成什么類型,第二個參數(shù)是傳入的字符串。
4、接著實現(xiàn)方法中的業(yè)務(wù)邏輯,如下例就是把字符串轉(zhuǎn)換成指定的日期格式。
public class DateConverter implements Converter {
public Object convert(Class clazz, Object obj) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (clazz == Date.class) {
String src = (String) obj;
Date dest = null;
try {
dest = sdf.parse(src);
} catch (ParseException e) {
System.out.println("未填生日");
}
return dest;
} else {
return null;
}
}
}
5、需要在action請求發(fā)出前注冊這個Converter,此時寫一個自己的ActionServlet,并且配置web.xml替換ActionServlet,在super.init()后注冊DateConverter,因為父類ActionServlet的init方法會重新注冊一遍所有Converter,所有在init方法前注冊就會無效,代碼如下:
public class WudiActionServlet extends ActionServlet {
private static final long serialVersionUID = 6225934087176816857L;
@Override
public void init() throws ServletException {
super.init();
ConvertUtils.register(new DateConverter(), Date.class);
}
}
6、想在jsp頁面中按自己設(shè)定的格式調(diào)用Date類型,可以通過EL表達式獲得。
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:formatDate value="${userForm.user.birthday}" pattern="yyyy-MM-dd" var="birthday"/>
<html:text property="user.birthday" value="${birthday}"></html:text>