Struts2日期时间选择器displayformat问题

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

问题在于,必须始终将struts2 datetimepicker

displayformat属性设置为tomcat服务器日期时间格式,否则提交的值为null。

  1. 右键单击右下角的日期。
  2. 单击更改日期和时间设置
  3. 更改日历设置
  4. 更改区域设置
  5. 将格式设置为英语(印度)

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

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

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

是否有任何变通办法或通过属性或其他解决方法?

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

回答:

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

在您的文件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日期格式

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

locale.shtml

以上是 Struts2日期时间选择器displayformat问题 的全部内容, 来源链接: utcz.com/qa/399137.html

回到顶部