Java Struts2日期时间选择器显示格式问题

Java Struts2日期时间选择器显示格式问题,java,tomcat,struts2,datepicker,ognl,Java,Tomcat,Struts2,Datepicker,Ognl,struts2.0.14的日期时间选择器标记面临的一个问题 问题在于struts2 datetimepicker displayformat属性 必须始终设置为tomcat服务器日期时间格式的格式 提交的值为空 更改Win 7中的日期时间设置: 右键单击右下角的日期 单击更改日期和时间设置 更改日历设置 更改区域设置 将格式设置为英语(印度) 复制步骤 如上所述更改区域设置并重新启动tomcat服务器 现在,不要在日期时间选择器中使用任何显示格式或使用除“dd/mm/yyyy”以外的显示格式 提

struts2.0.14的日期时间选择器标记面临的一个问题

问题在于struts2 datetimepicker displayformat属性 必须始终设置为tomcat服务器日期时间格式的格式 提交的值为空

更改Win 7中的日期时间设置:

  • 右键单击右下角的日期
  • 单击更改日期和时间设置
  • 更改日历设置
  • 更改区域设置
  • 将格式设置为英语(印度)
  • 复制步骤

  • 如上所述更改区域设置并重新启动tomcat服务器
  • 现在,不要在日期时间选择器中使用任何显示格式或使用除“dd/mm/yyyy”以外的显示格式
  • 提交日期为2012年12月21日的struts2表格
  • 实际提交日期设置为空
  • 现在将区域设置更改为英语(美国),不要使用任何displayformat并重新启动服务器
  • 作用中的值设置为通过表单提交
  • 预期结果

  • 无论系统日期时间格式是什么,都必须相应地解析日期,并使其在实际操作中可用
  • Envi:

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

    通过属性或其他什么解决方法或修复方法


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

    您需要使用自定义日期时间转换器

    xwork conversion.properties
    (如果没有,则创建)文件中,放置以下行:

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

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

    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;
                }
            }
        }
    
    import java.util*
    导入java.text.DateFormat.*;
    公共类StringToDateTimeConverter扩展了StrutsTypeConverter{
    公共对象convertFromString(映射上下文,字符串[]字符串,类到类){
    DateFormat DATETIME_FORMAT=getDateInstance(简称Locale.getDefault());
    if(strings==null | | strings.length==0 | | strings[0].trim().length()==0){
    返回null;
    }
    尝试
    {
    DATETIME_FORMAT.setLenient(false);
    return DATETIME_FORMAT.parseObject(字符串[0]);
    }捕获(解析异常){
    
    //抛出新的TypeConversionException();我不明白。也许这是我的英语问题。你正在尝试获取区域日期时间格式吗?更新了帖子,我希望你现在能够重新发布:)“*注意:如果答案是使用jquery或其他js库或升级,请不要回答。”很好的免责声明。感谢您限制了我们的自由。从“日期格式不同步…如果多个线程同时访问一种格式,它必须在外部同步。”这段代码是一个等待发生的意外。