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  
相关文章
|
安全 开发工具 Android开发
android-studio打开软件时出错,java.lang.RuntimeException: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'nam
android-studio打开软件时出错,java.lang.RuntimeException: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'nam
469 0
|
Java 数据库连接 数据库
jdbc利用java反射实现结果集得到处理:bug:argument type mismatch
jdbc利用java反射实现结果集得到处理:bug:argument type mismatch
271 0
jdbc利用java反射实现结果集得到处理:bug:argument type mismatch
|
14天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。
|
12天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第11天】 在Java中,高效的并发编程是提升应用性能和响应能力的关键。本文将探讨Java并发的核心概念,包括线程安全、锁机制、线程池以及并发集合等,同时提供实用的编程技巧和最佳实践,帮助开发者在保证线程安全的前提下,优化程序性能。我们将通过分析常见的并发问题,如竞态条件、死锁,以及如何利用现代Java并发工具来避免这些问题,从而构建更加健壮和高效的多线程应用程序。
|
4天前
|
安全 Java
深入理解 Java 多线程和并发工具类
【4月更文挑战第19天】本文探讨了Java多线程和并发工具类在实现高性能应用程序中的关键作用。通过继承`Thread`或实现`Runnable`创建线程,利用`Executors`管理线程池,以及使用`Semaphore`、`CountDownLatch`和`CyclicBarrier`进行线程同步。保证线程安全、实现线程协作和性能调优(如设置线程池大小、避免不必要同步)是重要环节。理解并恰当运用这些工具能提升程序效率和可靠性。
|
5天前
|
安全 Java
java多线程(一)(火车售票)
java多线程(一)(火车售票)
|
5天前
|
安全 Java 调度
Java并发编程:深入理解线程与锁
【4月更文挑战第18天】本文探讨了Java中的线程和锁机制,包括线程的创建(通过Thread类、Runnable接口或Callable/Future)及其生命周期。Java提供多种锁机制,如`synchronized`关键字、ReentrantLock和ReadWriteLock,以确保并发访问共享资源的安全。此外,文章还介绍了高级并发工具,如Semaphore(控制并发线程数)、CountDownLatch(线程间等待)和CyclicBarrier(同步多个线程)。掌握这些知识对于编写高效、正确的并发程序至关重要。
|
5天前
|
安全 Java 程序员
Java中的多线程并发编程实践
【4月更文挑战第18天】在现代软件开发中,为了提高程序性能和响应速度,经常需要利用多线程技术来实现并发执行。本文将深入探讨Java语言中的多线程机制,包括线程的创建、启动、同步以及线程池的使用等关键技术点。我们将通过具体代码实例,分析多线程编程的优势与挑战,并提出一系列优化策略来确保多线程环境下的程序稳定性和性能。
|
6天前
|
缓存 分布式计算 监控
Java并发编程:深入理解线程池
【4月更文挑战第17天】在Java并发编程中,线程池是一种非常重要的技术,它可以有效地管理和控制线程的执行,提高系统的性能和稳定性。本文将深入探讨Java线程池的工作原理,使用方法以及在实际开发中的应用场景,帮助读者更好地理解和使用Java线程池。
|
6天前
|
存储 安全 Java
Java中的容器,线程安全和线程不安全
Java中的容器,线程安全和线程不安全
15 1