码迷,mamicode.com
首页 > 其他好文 > 详细

struts保存对象date报String类型不匹配

时间:2015-10-13 18:43:37      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:

先贴一下摘抄的异常关键字

[com.opensymphony.xwork2.ognl.OgnlValueStack]-[WARN] Error setting expression ‘datetime‘ with value ‘[Ljava.lang.String;@74448287‘
ognl.MethodFailedException: Method "setDatetime" failed for object com.oss.Merchant@e6c7c0e [java.lang.NoSuchMethodException: com.oss.Merchant.setDatetime([Ljava.lang.String;)]
...

Caused by: java.lang.NoSuchMethodException: com.oss.Merchant.setDatetime([Ljava.lang.String;)
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1246)
... 102 more
/-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: com.oss.Merchant.setDatetime([Ljava.lang.String;)

再描述一下异常请款。本地,测试,正式三个环境皆没有问题的,外国使用确无法保存,查看日志,发现以上报错。于是百度谷歌了一番,有以下解释:

yyyy-MM-dd格式,在外国不是一个标准的时间显示格式,Struts解释是针对输入,最近似哪种类型而进行转换,这样格式的日期,被误认为是字符串。

网上教授的解决方法是:

1,建一个转换方法,加上配置文件,所有的字符串转日期都经过此工具类转换。

2,将系统的字符编码从LANG="en_US.UTF-8",修改为:LANG="zh_CN.UTF-8"

3,还有说用插件就可以,如My97DatePicker(我的工程本身就是用这个插件的,所以我认为这种解决方法不可取)

4,在jsp页面用java.util.Date先转类型(觉得不会管用)

有兴趣的朋友可以尝试一下。

我选择的是第三种解决方法,定义一个String dateStr,接收表单的输入,然后

String dateStr;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date= sdf.parse(dateStr); merchant.setDatetime(date);

这种做法比较简便,不影响全局配置,大体上不会引入新错误,就是如果这种日期输入情况比较多,就会造成很多重复代码。

struts保存对象date报String类型不匹配

标签:

原文地址:http://www.cnblogs.com/xianxh/p/4875318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!