struts使用日期包括將string自動轉化為日期fill到form中,以及將form中的日期按照指定格式顯示在html的textfield中。首先講第一種情況的解決方法:
創(chuàng)建如下類:
import?java.util.*;
import?org.apache.commons.beanutils.*;
import?java.text.SimpleDateFormat;
public?class?DateConvert?implements?Converter
{
??static?SimpleDateFormat?df?=?new?SimpleDateFormat("yyyy/MM/dd");
??public?DateConvert()
??{
??}
??public?Object?convert(Class?type,?Object?value)
??{
????
????if(value==null)return?null;
????if(((String)value).trim().length()==0)?return?null;
????if(value?instanceof?String)
????{
??????try
??????{
????????return?df.parse((String)value);
??????}
??????catch?(Exception?ex)
??????{
????????throw?new?ConversionException("輸入的日期類型不合乎yyyy/MM/dd"
??????????+?value.getClass());
??????}
????}
????else
????{
??????throw?new?ConversionException("輸入的不是字符類型"+value.getClass());
????}
??}
}
然后在你的系統(tǒng)某出使用如下(如web的init方法)
ConvertUtils.register(new?DateConvert(),java.util.Date.class);
參數(shù)用于表示DateConvert類負責處理java.util.Date類型的轉化
第二種情況是如何顯示form中日期類型到html:text中,我用的辦法是修改struts的代碼,重新生成一個新的struts.jar
org.apache.struts.taglib.html.BaseFieldTag的doStartTag的方法
找到?if?(value?!=?null)?{results.append(ResponseUtils.filter(value))代碼行下面的內容,需要修改此處代碼,以便輸出日期類型
如下:
if?(value?!=?null)?{
????????????results.append(ResponseUtils.filter(value));
????????}?else?if?(redisplay?||?!"password".equals(type))?{
????????????Object?value?=?RequestUtils.lookup(pageContext,?name,?property,?null);
????????????//System.out.println("lijz?"+value);
????????????if(value?instanceof?java.util.Date)
????????????{
???????????????//System.out.println("date="+value);
???????????????if?(value?==?null)
???????????????????value?=?"";
????????else
????????{
??????????java.util.Date?d=?(java.util.Date)value;
??????????try
???????????{
????????????results.append(ResponseUtils.filter(df.format(d)));
??????????}
??????????catch(Exception?ex)
??????????{
????????????System.out.println("form?error:"+ex.getMessage());
??????????}
??????????}
????????????}
???????????else
???????????{
???????????????if?(value?==?null)
????????????????value?=?"";
????????????????results.append(ResponseUtils.filter(value.toString()));
???????????}
???????????
???????}
????????results.append("\"");
????????results.append(prepareEventHandlers());
????????results.append(prepareStyles());
????????results.append(getElementClose());
????????//?Print?this?field?to?our?output?writer
????????ResponseUtils.write(pageContext,?results.toString());
????????//?Continue?processing?this?page
????????return?(EVAL_BODY_TAG);??????
?
?重新編譯struts成struts.jar.放到你需要的項目中?
作者Blog:http://blog.csdn.net/chensheng913/
posted on 2006-08-21 16:02
阿成 閱讀(243)
評論(0) 編輯 收藏 所屬分類:
Struts