kelefa  
          大千世界中,唯一缺乏的就是人類的注意力。
          日歷
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345
          統(tǒng)計
          • 隨筆 - 11
          • 文章 - 0
          • 評論 - 28
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
          用webwork的datepicker時, 如果格式是"%Y-%m-%d"工作很正常, 但是有些格式需要帶上時間的:
          "%Y-%m-%d?%H:%M", 這時用webwork默認的類型轉(zhuǎn)換就不行了,需要自己實現(xiàn), 根據(jù)javaeye論壇某高手的建議用正則表達式來判斷form傳過來的日期字符串是"%Y-%m-%d"還是"%Y-%m-%d?%H:%M",再用相應(yīng)的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默認的轉(zhuǎn)換你還需要在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 楊杰榮 閱讀(909) 評論(0)  編輯  收藏 所屬分類: webwork,hibernate
           
          Copyright © 楊杰榮 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 惠州市| 合水县| 扎兰屯市| 高碑店市| 张北县| 丰原市| 简阳市| 武川县| 公安县| 灵丘县| 寿阳县| 临桂县| 吉首市| 曲沃县| 寻乌县| 常熟市| 崇仁县| 承德市| 福清市| 五常市| 涞源县| 澳门| 信阳市| 寿光市| 六枝特区| 车致| 临漳县| 台中市| 安乡县| 凌海市| 定日县| 兴山县| 白银市| 巫山县| 绥芬河市| 台北市| 庄河市| 余姚市| 张掖市| 元朗区| 吴堡县|