kelefa  
          大千世界中,唯一缺乏的就是人類的注意力。
          日歷
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789
          統(tǒng)計(jì)
          • 隨筆 - 11
          • 文章 - 0
          • 評(píng)論 - 28
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

           
          用webwork的datepicker時(shí), 如果格式是"%Y-%m-%d"工作很正常, 但是有些格式需要帶上時(shí)間的:
          "%Y-%m-%d?%H:%M", 這時(shí)用webwork默認(rèn)的類型轉(zhuǎn)換就不行了,需要自己實(shí)現(xiàn), 根據(jù)javaeye論壇某高手的建議用正則表達(dá)式來(lái)判斷form傳過(guò)來(lái)的日期字符串是"%Y-%m-%d"還是"%Y-%m-%d?%H:%M",再用相應(yīng)的SimpleDateFormat來(lái)parse分析字符串生成Date對(duì)象, 代碼如下:

          import?java.text.ParseException;
          import?java.text.SimpleDateFormat;
          import?java.util.Date;
          import?java.util.Map;

          import?org.apache.log4j.Logger;

          import?com.opensymphony.webwork.util.WebWorkTypeConverter;

          public?class?DateConverter
          ????????
          extends?WebWorkTypeConverter
          {
          ????
          private?static?final?Logger?log?=?Logger.getLogger(?DateConverter.class?);

          ????
          private?final?static?String?regex_time?=?"[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2}?[0-9]{1,2}:[0-9]{1,2}";

          ????
          private?final?static?SimpleDateFormat?sdf_time?=?new?SimpleDateFormat(
          ????????????
          "yyyy-MM-dd?HH:mm"?);

          ????
          private?final?static?String?regex_date?=?"[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2}";

          ????
          private?final?static?SimpleDateFormat?sdf_date?=?new?SimpleDateFormat(
          ????????????
          "yyyy-MM-dd"?);

          ????@Override?
          public?Object?convertFromString(?Map?context,?String[]?values,
          ????????????Class?toClass?)
          ????
          {
          ????????
          if?(?values.length?==?1?)
          ????????
          {
          ????????????Date?date?
          =?null;
          ????????????
          try
          ????????????
          {
          ????????????????date?
          =?convertToDate(?values[0]?);
          ????????????}

          ????????????
          catch?(?ParseException?e?)
          ????????????
          {
          ????????????????log.warn(?e.getMessage()?);
          ????????????}

          ????????????
          return?date;
          ????????}


          ????????Date[]?results?
          =?new?Date[values.length];

          ????????
          for?(?int?i?=?0;?i?<?values.length;?i++?)
          ????????
          {
          ????????????String?value?
          =?values[i];
          ????????????
          try
          ????????????
          {
          ????????????????results[i]?
          =?convertToDate(?value?);
          ????????????}

          ????????????
          catch?(?ParseException?e?)
          ????????????
          {
          ????????????????log.warn(?e.getMessage()?);
          ????????????}

          ????????}


          ????????
          return?results;
          ????}


          ????
          private?Date?convertToDate(?String?value?)
          ????????????
          throws?ParseException
          ????
          {
          ????????
          if?(?value.matches(?regex_time?)?)
          ????????????
          return?sdf_time.parse(?value?);
          ????????
          else?if?(?value.matches(?regex_date?)?)
          ????????????
          return?sdf_date.parse(?value?);

          ????????
          return?null;
          ????}


          ????@Override?
          public?String?convertToString(?Map?context,?Object?o?)
          ????
          {
          ????????
          if?(?o?instanceof?Date?)
          ????????
          {
          ????????????Date?date?
          =?(Date)?o;
          ????????????
          return?sdf_time.format(?date?);
          ????????}


          ????????
          return?o.toString();
          ????}


          ????
          public?static?void?main(?String[]?args?)
          ????
          {
          ????????System.out.println(?
          "2006-07-11".matches(?regex_date?)?);
          ????????System.out.println(?
          "2006-07-11?00:21".matches(?regex_time?)?);
          ????}

          }

          要讓這個(gè)類來(lái)代替webwork默認(rèn)的轉(zhuǎn)換你還需要在classpath目錄, 一般就是classes目錄放置配置文件
          xwork-conversion.properties:
          java.util.Date=DateConverter

          這種方法是對(duì)整個(gè)application起作用,.
          如果要只對(duì)單個(gè)action起作用, 在action同一個(gè)package寫一個(gè)ActionClassName-conversion.properties:
          startDate=DateConverter
          posted on 2006-07-13 15:07 楊杰榮 閱讀(912) 評(píng)論(0)  編輯  收藏 所屬分類: webwork,hibernate
           
          Copyright © 楊杰榮 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 罗田县| 荆门市| 舟曲县| 吴桥县| 邮箱| 定西市| 南京市| 乐陵市| 广汉市| 革吉县| 玛多县| 阜平县| 克东县| 三明市| 江山市| 上杭县| 古田县| 石家庄市| 杨浦区| 新宾| 什邡市| 濮阳县| 襄汾县| 巴塘县| 曲阜市| 蓬莱市| 孟连| 上林县| 南皮县| 常德市| 二手房| 临朐县| 正安县| 阿拉善左旗| 夏津县| 仁怀市| 达日县| 青龙| 阳泉市| 昌邑市| 邵武市|