Struts2 Datetime选择器显示格式问题 [英] Struts2 Datetime picker displayformat issue

查看:198
本文介绍了Struts2 Datetime选择器显示格式问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到的问题是struts2.0.14的日期时间选择器标签

A issue I am facing with struts2.0.14's date time picker tag


问题是struts2 datetimepicker displayformat属性
必须始终设置为tomcat服务器日期格式的格式否则
提交的值为null。

The problem is that struts2 datetimepicker displayformat attribute must always be set to format of tomcat server date time format else the submitted values are null.

更改日期时间设置在Win 7:


  1. 右键单击右下角的日期。

  2. 点击更改日期&时间设置

  3. 更改日历设置

  4. 更改区域设置

  5. 设置格式为英语(印度)

Repro Steps


  1. 如上所述更改区域设置&重新启动tomcat服务器。

  2. 现在不要在日期时间选择器中使用任何displayformat或使用dd / mm / yyyy之外的显示格式

  3. 提交struts2表单与日期21/12/2012

  4. 在行动提交日期设置为null

  5. 现在将区域设置更改为英语),并且不要使用任何displayformat并重新启动服务器。

  6. 操作中的值设置为通过表单提交。

  1. Change the Regional Settings as mentioned above & restart the tomcat server.
  2. Now do not use any displayformat or use display format other than "dd/mm/yyyy" in date time picker
  3. Submit the struts2 form with date 21/12/2012
  4. In Action submitted date is set to null
  5. Now change the regional setting to English(US) and do not use any displayformat and restart the server.
  6. Values in action are set as submitted through form.

预期结果


  1. 无论系统日期时间格式如何,那么日期必须相应地解析并且可以使用。

Envi:

Java 6,Struts2.0.14,Firefix 12,tomcat 6。

Java 6, Struts2.0.14, Firefix 12, tomcat 6.

任何解决方法或通过属性或东西修复?

Any workarounds or fixes through properties or something?

* 注意:如果答案是使用jquery或其他js lib或升级,请不要回答。

推荐答案

你n要使用您的自定义DateTime转换器。

You need to use your custom DateTime converter.

在您的 xwork-conversion.properties (如果您不创建有一个)文件放这条线:

In your xwork-conversion.properties (create if you don't have one) file put this line:


java.util.Date = org.yourproject.common.StringToDateTimeConverter

java.util.Date = org.yourproject.common.StringToDateTimeConverter

在你的 StringToDateTimeConverter 中,有这样的代码

And in your StringToDateTimeConverter, have code something like this

import java.util.*
import java.text.DateFormat.*;

    public class StringToDateTimeConverter extends StrutsTypeConverter{

        public Object convertFromString(Map context, String[] strings, Class toClass) {     

            DateFormat DATETIME_FORMAT = getDateInstance(SHORT, Locale.getDefault());

            if (strings == null || strings.length == 0 || strings[0].trim().length() == 0) {
                return null;
            }

            try
            {
                DATETIME_FORMAT.setLenient(false);
                return DATETIME_FORMAT.parseObject(strings[0]);

            } catch (ParseException e) {
                //throw new TypeConversionException(); <-- if you want to catch conversion error
                return null;
            }
        }

        public String convertToString(Map context, Object date) {
            DateFormat DATETIME_FORMAT = getDateInstance(SHORT, Locale.getDefault());
            if (date != null && date instanceof Date) {
                return DATETIME_FORMAT.format(date);
            } else {
                return null;
            }
        }
    }

参考文献:

区域设置的Java日期格式

http://www.roseindia.net/java/java-get-example/java-get-default-locale.shtml

这篇关于Struts2 Datetime选择器显示格式问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆