Posted on 2005-07-25 14:44
風太少 閱讀(259)
評論(0) 編輯 收藏
在Struts中我們經常要處理用戶錄入的日期字符串,將其轉換為java.util.Date類型。在這里我們提供兩種方式來實現這樣的轉換。
1 在ActionForm子類中,創建兩個變量來處理日期,一個為Date類型,一個為String類型(臨時變量),我們使用String類型的變量來接受用戶的錄入,再編碼將其轉換為Date類型,在頁面輸出時,在根據Date類型生成自定義的文本格式。這種方式靈活性大,不過需要你多付出點勞動。
2 編寫一個plugin實現自動轉換。Struts下各種對象類型的轉換是通過BeanUtils的Converter實現,所以我們只需向BeanUtils注冊一個日期字符轉換的Converter即可,這種方式不需要你編寫代碼進行轉換,不過在頁面呈現的時候,你可能需要進行格式化,從Date對象之間生產的字符串(toString())往往不是你需要的,使用JSTL就可以的。
首先編寫一個日期轉換的Converter類:
public class DateConverter implements Converter {
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public Object convert(Class arg0, Object value) {
try {
return sdf.parse((String) value);
} catch (Exception e) {
ex.printStackTrace();
}
}
}
然后編寫一個Struts的plugin,執行Converter注冊:
public class ConvertPlugIn implements PlugIn {
public void destroy() {
ConvertUtils.deregister();
}
public void init(ActionServlet arg0, ModuleConfig arg1)
throws ServletException {
ConvertUtils.register(new DateConverter(), Date.class);
}
}
最后在struts-config.xml進行plugin聲明:
<plug-in className="DateConverter" />
進行日期轉換,這對Struts來說是非常有益的。Struts的ActionForm一直被認為是設計的缺陷,但是通過BeanUtils可以快速實現ActionForm、VO、PO對象之間的轉換,這就要求ActionForm設計比較合理,當然在ActionForm中實現從采集字符串到日期的轉換會節省很多時間,我們只需關注域對象間的轉換就可以啦。