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

标签 java tomcat struts2 datepicker ognl

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

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. 将格式设置为英语(印度)

重现步骤

  1. 如上所述更改区域设置并重新启动 tomcat 服务器。
  2. 现在不要在日期时间选择器中使用任何显示格式或使用“dd/mm/yyyy”以外的显示格式
  3. 提交日期为 21/12/2012 的 struts2 表单
  4. 在行动中提交日期设置为空
  5. 现在将区域设置更改为英语(美国)并且不使用任何显示格式并重新启动服务器。
  6. 行动中的值(value)被设置为通过表单提交。

预期结果

  1. 无论系统日期时间格式是什么,都必须相应地解析日期并使其可用。

环境:

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

引用资料:

Java Date Format for Locale

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

关于java - Struts2 日期时间选择器显示格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910026/

相关文章:

javascript - 根据其他下拉菜单更改下拉菜单

java - 模拟 HttpServletResponse 并将其传递给 ServletActionContext - 并获取响应对象

spring - 异常逻辑中的外部重定向在 Tomcat 8.5.39 上不起作用

java - Eclipse,链接源文件夹

java - Spring init 方法参数问题

java - Java 中的 ArrayIndexOutOfBoundsException 问题

apache - 在 openshift 上,我的 tomcat 服务器前面是否有任何 apache?

java - 用于在tomcat中部署war文件的安装页面

java - Struts 2操作方法和struts.convention.result.path不起作用

java - Spring Boot + Thymeleaf 错误 java.lang.ClassNotFoundException : org. thymeleaf.dom.Attribute