我在使用 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 中更改日期时间设置:
- 右键单击右下角日期。
- 点击更改日期和时间设置
- 更改日历设置
- 更改区域设置
- 将格式设置为英语(印度)
重现步骤
- 如上所述更改区域设置并重新启动 tomcat 服务器。
- 现在不要在日期时间选择器中使用任何显示格式或使用“dd/mm/yyyy”以外的显示格式
- 提交日期为 21/12/2012 的 struts2 表单
- 在行动中提交日期设置为空
- 现在将区域设置更改为英语(美国)并且不使用任何显示格式并重新启动服务器。
- 行动中的值(value)被设置为通过表单提交。
预期结果
- 无论系统日期时间格式是什么,都必须相应地解析日期并使其可用。
环境:
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;
}
}
}
引用资料:
http://www.roseindia.net/java/java-get-example/java-get-default-locale.shtml
关于java - Struts2 日期时间选择器显示格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910026/