Struts2日期时间选择器displayformat问题
我在struts2.0.14的日期时间选择器标签中遇到的问题
问题在于,必须始终将struts2 datetimepicker
displayformat属性设置为tomcat服务器日期时间格式,否则提交的值为null。
- 右键单击右下角的日期。
- 单击更改日期和时间设置
- 更改日历设置
- 更改区域设置
- 将格式设置为英语(印度)
- 如上所述更改区域设置并重新启动tomcat服务器。
- 现在,不要在日期时间选择器中使用任何显示格式或使用“ dd / mm / yyyy”以外的其他显示格式
- 提交日期为21/12/2012的struts2表单
- 在行动中,提交日期设置为null
- 现在,将区域设置更改为English(US),不要使用任何显示格式,然后重新启动服务器。
- 有效值设置为通过表单提交。
- 无论系统日期时间格式是什么,都必须相应地解析日期并使之可用。
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