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

          導航

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
          用webwork的datepicker時, 如果格式是"%Y-%m-%d"工作很正常, 但是有些格式需要帶上時間的:
          "%Y-%m-%d?%H:%M", 這時用webwork默認的類型轉換就不行了,需要自己實現, 根據javaeye論壇某高手的建議用正則表達式來判斷form傳過來的日期字符串是"%Y-%m-%d"還是"%Y-%m-%d?%H:%M",再用相應的SimpleDateFormat來parse分析字符串生成Date對象, 代碼如下:

          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?)?);
          ????}

          }

          要讓這個類來代替webwork默認的轉換你還需要在classpath目錄, 一般就是classes目錄放置配置文件
          xwork-conversion.properties:
          java.util.Date=DateConverter

          這種方法是對整個application起作用,.
          如果要只對單個action起作用, 在action同一個package寫一個ActionClassName-conversion.properties:
          startDate=DateConverter
          posted on 2006-07-13 15:07 楊杰榮 閱讀(912) 評論(0)  編輯  收藏 所屬分類: webwork,hibernate
           
          Copyright © 楊杰榮 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 溧阳市| 西乡县| 竹北市| 集贤县| 伊通| 南岸区| 和龙市| 涪陵区| 奉节县| 子长县| 木兰县| 惠安县| 乐清市| 嘉荫县| 灵武市| 和田县| 盐亭县| 高淳县| 哈尔滨市| 皋兰县| 荣成市| 阳高县| 大英县| 大城县| 阜新市| 冕宁县| 铁力市| 百色市| 格尔木市| 大同市| 济宁市| 错那县| 大名县| 宁海县| 抚州市| 宁阳县| 东阿县| 淮北市| 嘉荫县| 舞阳县| 贺州市|