日期:2014-05-19  浏览次数:20772 次

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转换的拦截器就好了~~~也蛮方便的
------解决方案--------------------
引用:
本帖最后由 wxx284290250 于 2012-12-10 17:56:14 编辑
            问题一:我在地址栏中传递了Date类型参数(相应的Action中已经写了setD(Date d)和getD()方法了),但是一直报错,大概的意思是“传递进来的参数是String类型,找不到setD(String)方法”。我记得struts2.1的时候,D……


不知道你传递的时候是不是会多出空格什么的、反正我是能正常传递、我struts的版本是2.3.3

不过我是2012-12-11这样格式的、

这篇跟你情况貌似很像、
http://www.cnblogs.com/yaohwang/archive/2012/07/05/2578567.html