struts2.3.4版本中,页面地址传递Date类型参数,出错了,是版本的问题吗,传递过Date类型参数的大神进来说下!
本帖最后由 wxx284290250 于 2012-12-10 17:56:14 编辑
问题一:我在地址栏中传递了Date类型参数(相应的Action中已经写了setD(Date d)和getD()方法了),但是一直报错,大概的意思是“传递进来的参数是String类型,找不到setD(String)方法”。我记得struts2.1的时候,Date类型只要按照他规定的格式(d=1991-03-19)传进来,struts就会自动转换成Date类型啊,为什么在struts2.3.4中就不可以,是版本的问题吗。
顺便补充一下,我刚刚自定义了一个Point的类型转换器,用p=3,8传值成功。难道在struts2.3.4中也都要自己定义Date类型的转换器吗??????????????????大神们,你们平时传递日期类型是怎么传的呢,要自己定义转换器吗,还是根本不用struts传?给点经验哈,先谢下!!!
问题二:大婶们,你们现在注册转换器是用什么方式呢?xwork-conversion.properties?还是用注解:Annotation?
TestAction.java如下
package com.bjsxt.action;
import java.awt.Point;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport {
private Date d;
Point p;
@Override
public String execute() throws Exception {
return super.execute();
}
public Date getD() {
return d;
}
public void setD(Date d) {
this.d = d;
}
public Point getP() {
return p;
}
public void setP(Point p) {
this.p = p;
}
}
错误信息如下
ognl.MethodFailedException: Method "setD" failed for object com.bjsxt.action.TestAction@10bfcf [java.lang.NoSuchMethodException: com.bjsxt.action.TestAction.setD([Ljava.lang.String;)]
------解决方案--------------------上传一个String类型的日期不就结了
------解决方案--------------------下一个版本一般会继承上一个版本的优点,我觉得应该是可以接受Date类型的。。
只是我感觉,有可能接受的格式会不会有一点点改动,这个我没试验过,只是猜测。
------解决方案--------------------date类型的传递版本不一的~~~喜欢的话~~自己写个date转换的拦截器就好了~~~也蛮方便的
------解决方案--------------------
不知道你传递的时候是不是会多出空格什么的、反正我是能正常传递、我struts的版本是2.3.3
不过我是2012-12-11这样格式的、
这篇跟你情况貌似很像、
http://www.cnblogs.com/yaohwang/archive/2012/07/05/2578567.html