date java.lang.IllegalArgumentException: argument type mismatch

简介:

项目使用 strut2 ,springhibernate,提交表单时报错

Java.lang.NoSuchMethodException: com.shop.jn.entity.Goods.setBuyDateTime([Ljava.lang.String;)]

异常详细信息:

Xml代码   收藏代码
  1. 11:23:30,113  WARN  - Error setting expression 'goods.buyDateTime' with value '[Ljava.lang.String;@109558d'  
  2. ognl.MethodFailedException: Method "setBuyDateTime" failed for object Goods [id=0name=nulldescription=null] [java.lang.NoSuchMethodException: com.shop.jn.entity.Goods.setBuyDateTime([Ljava.lang.String;)]  
  3.     at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1289)  
  4.     at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1478)  
  5.     at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)  
  6.     at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)  
  7.     at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)  
  8.     at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2315)  
  9.     at ognl.ASTProperty.setValueBody(ASTProperty.java:127)  
  10.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  11.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  12.     at ognl.ASTChain.setValueBody(ASTChain.java:227)  
  13.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  14.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  15.     at ognl.Ognl.setValue(Ognl.java:737)  
  16.     at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217)  
  17.     at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186)  
  18.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173)  
  19.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151)  
  20.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:317)  
  21.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:228)  
  22.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  23.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  24.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)  
  25.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  26.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  27.     at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)  
  28.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  29.     at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)  
  30.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  31.     at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)  
  32.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  33.     at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)  
  34.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  35.     at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)  
  36.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  37.     at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)  
  38.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  39.     at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)  
  40.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  41.     at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)  
  42.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  43.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  44.     at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)  
  45.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  46.     at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)  
  47.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  48.     at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)  
  49.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  50.     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)  
  51.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  52.     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)  
  53.     at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)  
  54.     at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)  
  55.     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)  
  56.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
  57.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
  58.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)  
  59.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)  
  60.     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)  
  61.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)  
  62.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)  
  63.     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)  
  64.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
  65.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  
  66.     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)  
  67.     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)  
  68.     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)  
  69.     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
  70.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
  71.     at java.lang.Thread.run(Thread.java:662)  
  72. Caused by: java.lang.NoSuchMethodException: com.shop.jn.entity.Goods.setBuyDateTime([Ljava.lang.String;)  
  73.     at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1230)  
  74.     ... 68 more  
  75. /-- Encapsulated exception ------------\  
  76. java.lang.NoSuchMethodException: com.shop.jn.entity.Goods.setBuyDateTime([Ljava.lang.String;)  
  77.     at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1230)  
  78.     at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1478)  
  79.     at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)  
  80.     at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)  
  81.     at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)  
  82.     at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2315)  
  83.     at ognl.ASTProperty.setValueBody(ASTProperty.java:127)  
  84.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  85.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  86.     at ognl.ASTChain.setValueBody(ASTChain.java:227)  
  87.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  88.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  89.     at ognl.Ognl.setValue(Ognl.java:737)  
  90.     at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217)  
  91.     at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186)  
  92.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173)  
  93.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151)  
  94.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:317)  
  95.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:228)  
  96.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  97.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  98.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)  
  99.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  100.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  101.     at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)  
  102.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  103.     at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)  
  104.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  105.     at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)  
  106.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  107.     at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)  
  108.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  109.     at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)  
  110.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  111.     at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)  
  112.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  113.     at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)  
  114.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  115.     at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)  
  116.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  117.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  118.     at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)  
  119.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  120.     at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)  
  121.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  122.     at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)  
  123.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  124.     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)  
  125.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  126.     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)  
  127.     at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)  
  128.     at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)  
  129.     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)  
  130.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
  131.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
  132.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)  
  133.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)  
  134.     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)  
  135.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)  
  136.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)  
  137.     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)  
  138.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
  139.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  
  140.     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)  
  141.     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)  
  142.     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)  
  143.     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
  144.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
  145.     at java.lang.Thread.run(Thread.java:662)  
  146. \--------------------------------------/  

JSP页面部分代码(表单中)如下 :

Xml代码   收藏代码
  1. <s:hidden name="goods.buyDateTime"></s:hidden>  

 goods对应的实体类(部分getter,setter方法已省略):

Java代码   收藏代码
  1. package com.shop.jn.entity;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.Date;  
  5.   
  6. /** 
  7.  * entity:goods 
  8.  * @author huangwei 
  9.  * 
  10.  */  
  11. public class Goods  implements Serializable{  
  12.     private static final long serialVersionUID = 586940311263079808L;  
  13.     private int id;  
  14.     /** 
  15.      * goods name 
  16.      */  
  17.     private String name;  
  18.     /** 
  19.      * alias of goods 
  20.      */  
  21.     private String alias;  
  22.     /** 
  23.      * when goods was brought 
  24.      */  
  25.     private Date buyDateTime;  
  26.     /** 
  27.      * when this record was modified 
  28.      */  
  29.     private Date latestModDateTime;  
  30.     /** 
  31.      * the price of goods 
  32.      */  
  33.     private double price;  
  34.     /** 
  35.      * the detail of the goods 
  36.      */  
  37.     private String description;  
  38.     /** 
  39.      * the supermarket the goods belong 
  40.      */  
  41.     private Supermarket supermarket;  
  42.       
  43.     public int getId() {  
  44.         return id;  
  45.     }  
  46.     public void setId(int id) {  
  47.         this.id = id;  
  48.     }  
  49.     public String getName() {  
  50.         return name;  
  51.     }  
  52.     public void setName(String name) {  
  53.         this.name = name;  
  54.     }  
  55.     public String getAlias() {  
  56.         return alias;  
  57.     }  
  58.     public void setAlias(String alias) {  
  59.         this.alias = alias;  
  60.     }  
  61.   
  62.       
  63.     public Date getLatestModDateTime() {  
  64.         return latestModDateTime;  
  65.     }  
  66.     public void setLatestModDateTime(Date latestModDateTime) {  
  67.         this.latestModDateTime = latestModDateTime;  
  68.     }  
  69.       
  70.       
  71.     public Date getBuyDateTime() {  
  72.         return buyDateTime;  
  73.     }  
  74.     public void setBuyDateTime(Date buyDateTime) {  
  75.         System.out.println("buyDateTime:"+buyDateTime);  
  76.         this.buyDateTime=buyDateTime;  
  77.     }  
  78.       
  79.       
  80. }  

 实体类中buyDateTime 的类型是java.util.Date

使用IE浏览器有问题,但是使用google浏览器没问题。

IE的locale是en_US,见下图:



 

原因到底是什么呢?因为在火狐和谷歌浏览器中没问题啊

最后发现是IE浏览器的语言环境是英文

 把语言调整为中文就OK 了.

针对这个问题,我们没法要求客户一定设置中文为默认浏览器的语言环境。因而对于Date类型的转换,可以自己定义一个转换器。

Java代码   收藏代码
  1. package com.common.convert;  
  2.   
  3. import java.sql.Date;  
  4. import java.sql.Timestamp;  
  5. import java.text.ParseException;  
  6. import java.text.SimpleDateFormat;  
  7. import java.util.Map;  
  8.   
  9. import ognl.DefaultTypeConverter;  
  10.   
  11. import org.apache.commons.lang.StringUtils;  
  12. import org.apache.commons.lang3.time.DateUtils;  
  13. import org.apache.log4j.Logger;  
  14. /*** 
  15.  * 日期转换器.<br>用于struts2 
  16.  *  
  17.  * @author huangwei 
  18.  * 
  19.  */  
  20. public class DateConverter extends DefaultTypeConverter {  
  21.     private static final Logger logger = Logger.getLogger(DateConverter.class);  
  22.   
  23.     private static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";  
  24.     private static final String DATETIME_PATTERN_NO_SECOND = "yyyy-MM-dd HH:mm";  
  25.     private static final String DATETIME_PATTERN_ZH ="yyyy年MM月dd日 HH点mm分ss秒";  
  26.     private static final String DATETIME_PATTERN_ZH2 ="yyyy年MM月dd日 HH时mm分ss秒";  
  27.     private static final String DATE_PATTERN = "yyyy-MM-dd";  
  28.   
  29.     private static final String MONTH_PATTERN = "yyyy-MM";  
  30.   
  31.     /** 
  32.      * Convert value between types 
  33.      */  
  34.     @SuppressWarnings("unchecked")  
  35.     public Object convertValue(Map ognlContext, Object value, Class toType) {  
  36.         Object result = null;  
  37.         // java.sql.Date 是java.util.Date 的子类  
  38.         if (toType == java.util.Date.class) {  
  39.             try {  
  40.                 result = doConvertToDate(value,  toType);  
  41.             } catch (ParseException e) {  
  42.                 e.printStackTrace();  
  43.             }  
  44.         } else if (toType == java.sql.Timestamp.class) {  
  45.             try {  
  46.                 java.util.Date date=doConvertToDate(value, toType);  
  47.                 result = new Timestamp(date.getTime());  
  48.             } catch (ParseException e) {  
  49.                 e.printStackTrace();  
  50.             }  
  51.         } else if (toType == String.class) {  
  52.             result = doConvertToString(value);  
  53.         }  
  54.         return result;  
  55.     }  
  56.   
  57.     /** 
  58.      * Convert String to Date 
  59.      *  
  60.      * @param value 
  61.      * @return 
  62.      * @throws ParseException 
  63.      */  
  64.     private java.util.Date doConvertToDate(Object value,Class toType) throws ParseException {  
  65.         java.util.Date result = null;  
  66.   
  67.         if (value instanceof String) {  
  68.             result = DateUtils.parseDate((String) value, new String[] {DATETIME_PATTERN,  
  69.                     DATE_PATTERN,  MONTH_PATTERN   
  70.                     ,DATETIME_PATTERN_NO_SECOND,DATETIME_PATTERN_ZH,DATETIME_PATTERN_ZH2});  
  71. //          if(toType==java.sql.Timestamp.class){  
  72. //              result=new java.sql.Timestamp(result.getTime());  
  73. //          }  
  74.             // all patterns failed, try a milliseconds constructor  
  75.             if (result == null && StringUtils.isNotEmpty((String) value)) {  
  76.   
  77.                 try {  
  78.                     result = new Date(new Long((String) value).longValue());  
  79.                 } catch (Exception e) {  
  80.                     logger.error("Converting from milliseconds to Date fails!");  
  81.                     e.printStackTrace();  
  82.                 }  
  83.   
  84.             }  
  85.   
  86.         } else if (value instanceof Object[]) {  
  87.             // let's try to convert the first element only  
  88.             Object[] array = (Object[]) value;  
  89.   
  90.             if ((array != null) && (array.length >= 1)) {  
  91.                 value = array[0];  
  92.                 result = doConvertToDate(value,toType);  
  93.             }  
  94.   
  95.         } else if (Date.class.isAssignableFrom(value.getClass())) {  
  96.             result = (Date) value;  
  97.         }  
  98.         return (java.util.Date)result;  
  99.     }  
  100.   
  101.     /** 
  102.      * Convert Date to String 
  103.      *  
  104.      * @param value 
  105.      * @return 
  106.      */  
  107.     private String doConvertToString(Object value) {  
  108.         SimpleDateFormat simpleDateFormat = new SimpleDateFormat(  
  109.                 DATETIME_PATTERN);  
  110.         String result = (String)value;  
  111.         if (value instanceof Date) {  
  112.             result = simpleDateFormat.format(value);  
  113.         }  
  114.         return result;  
  115.     }  
  116. }  

 可以将该转换器注册为全局的:在classpath下建立xwork-conversion.properties文件,内容为:java.util.Date=你的类型转换器的完整限定类名

 
xwork-conversion.properties 内容如下:

Java代码   收藏代码
  1. java.util.Date=com.common.convert.DateConverter  
  2. java.sql.Timestamp=com.common.convert.DateConverter  
相关文章
|
8月前
|
Java 关系型数据库 MySQL
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
37、一篇文章学习 Java 中的日期相关类(Date 和 Calendar),非常常用
81 0
|
2月前
|
Java
Unable to obtain OffsetDateTime from TemporalAccessor: {},ISO resolved to 2024-11-26T20:55:26 of type java.time.format.Parsed
Unable to obtain OffsetDateTime from TemporalAccessor: {},ISO resolved to 2024-11-26T20:55:26 of type java.time.format.Parsed
52 0
|
4月前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
4月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
119 1
|
3月前
|
Java
Java的Date类使用
Java的Date类使用
36 0
|
4月前
|
Java API
java date 增加10s后的时间
在 Java 中,要将 `Date` 对象增加 10 秒,可以通过 `Calendar` 类(适用于 Java 8 之前)或 `java.time` 包中的 `LocalDateTime`、`ZonedDateTime` 和 `Instant` 类(Java 8 及以上)实现。使用 `Calendar` 类时,需设置并修改 `Calendar` 实例。而在 `java.time` 包中,可以使用 `plus` 方法结合 `ChronoUnit.SECONDS` 来增加秒数。具体选择取决于是否需要处理时区以及 Java 版本。
155 1
|
5月前
|
JSON 前端开发 JavaScript
JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
这篇文章讨论了前端Vue应用向后端Spring Boot服务传输数据时发生的类型不匹配问题,即后端期望接收的字段类型为`int`,而前端实际传输的类型为`Boolean`,导致无法反序列化的问题,并提供了问题的诊断和解决方案。
JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
java.lang.Error: Unresolved compilation problem: The type List is not generic; it cannot be parame
java.lang.Error: Unresolved compilation problem: The type List is not generic; it cannot be parame
|
7月前
|
安全 Java 测试技术
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
【6月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
105 0
|
7月前
|
Java 应用服务中间件
已解决:An error occurred at line: 1 in the generated java file The type java.io.ObjectInputStream canno
已解决:An error occurred at line: 1 in the generated java file The type java.io.ObjectInputStream canno
140 0