论坛首页 Java企业应用论坛

在Struts中如何处理ActionForm中包含日期类型属性的情况

浏览 14368 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-10-16  
JSP定义
<_input name="loginDate" type="text" class="line" id="loginDate">

ActionForm中定义
public class LoginForm extends ActionForm{
private Date loginDate = null;
public Date getLoginDate() {
...

然后运行时报错
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.struts.util.PropertyUtils.setSimpleProperty(PropertyUtils.java:988)
at org.apache.struts.util.PropertyUtils.setNestedProperty(PropertyUtils.java:904)
at org.apache.struts.util.PropertyUtils.setProperty(PropertyUtils.java:932)
at org.apache.struts.util.BeanUtils.populate(BeanUtils.java:509)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:772)
at org.apache.struts.action.ActionServlet.processPopulate(ActionServlet.java:2061)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1564)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
at com.caucho.server.http.Invocation.service(Invocation.java:312)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:221)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163)
at com.caucho.server.TcpConnection.run(TcpConnection.java:137)
at java.lang.Thread.run(Thread.java:536)

应该是JSP中的TEXT与ActionForm中的日期型属性转换错误了,请问大家是如何这种问题的
   发表时间:2003-10-16  
java.sql.Date
0 请登录后投票
   发表时间:2003-10-16  
yehs220 写道
java.sql.Date


用java.sql.Date Struts就能转换Text的内容为Date类型,不可能吧!

而且,我改了程序也是出一样的错误
0 请登录后投票
   发表时间:2003-10-16  
我用的是DynaValidatorForm,里面的属性类型定义为java.sql.Date,
提交的相应的参数的格式为yyyy-MM-dd,通过。
定义为java.util.Date时出错。
0 请登录后投票
   发表时间:2003-10-17  
现在我是用String类型来处理了,不知道有没有更好的办法
0 请登录后投票
   发表时间:2003-10-24  
怎么我用java.sql.Date就行呀?我用的是hibernate2.1b3带的commons-beanutils.jar。
0 请登录后投票
   发表时间:2003-10-28  
设置一个缺省值看看,可能是第一次调用时进行日期转换出错!
0 请登录后投票
   发表时间:2003-10-29  
不管什么数据库,一般我将日期(时间)定义成字符串型,存入格式化成“yyyyMMddhhmmss”形式,有时也定义成long integer型,存的是
java.util.Date的毫秒数。
0 请登录后投票
   发表时间:2003-11-18  
jinbo,你用的是Struts 1.0吧,在Struts 1.1里面已经把一些common的功能提取出来放到beanutil和其他的一些包里了,如果你用Struts 1.1的话,应该可以使用java.sql.Date。
0 请登录后投票
   发表时间:2003-11-18  
yehs220 写道
怎么我用java.sql.Date就行呀?我用的是hibernate2.1b3带的commons-beanutils.jar。


因为在BeanUtil包里有这个类,ConvertUtils.java,以及org.apache.commons.beanutils.converters包下的众多Converter们,才能把String类型的参数转换成各种不同的类型,但其中没有DateConverter,所以就不能转java.util.Date类型了,不过你可以尝试自己写个。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics