自定义 Date类型转换是报
来源:互联网 发布:全口种植牙价格 知乎 编辑:程序博客网 时间:2024/06/13 06:45
学习自定义类型转换器值,当输入的类型 和自定义的类型不一致是会报
convertFromString....java.text.ParseException: Format.parseObject(String) failedat java.text.Format.parseObject(Format.java:245)at com.baidu.action.conversion.DateConverter.convertFromString(DateConverter.java:44)at org.apache.struts2.util.StrutsTypeConverter.convertValue(StrutsTypeConverter.java:52)at com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter.convertValue(DefaultTypeConverter.java:92)at com.opensymphony.xwork2.conversion.impl.XWorkConverter.convertValue(XWorkConverter.java:314)at com.opensymphony.xwork2.ognl.OgnlTypeConverterWrapper.convertValue(OgnlTypeConverterWrapper.java:39)at ognl.OgnlRuntime.getConvertedType(OgnlRuntime.java:1081)at ognl.OgnlRuntime.getConvertedTypes(OgnlRuntime.java:1098)at ognl.OgnlRuntime.getConvertedMethodAndArgs(OgnlRuntime.java:1124)at ognl.OgnlRuntime.getAppropriateMethod(OgnlRuntime.java:1210)at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1224)at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1503)at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2432)at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:81)at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2432)at ognl.ASTProperty.setValueBody(ASTProperty.java:127)at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)at ognl.SimpleNode.setValue(SimpleNode.java:301)at ognl.Ognl.setValue(Ognl.java:737)at com.opensymphony.xwork2.ognl.OgnlUtil$1.execute(OgnlUtil.java:293)at com.opensymphony.xwork2.ognl.OgnlUtil$1.execute(OgnlUtil.java:288)at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecute(OgnlUtil.java:346)at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:288)at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:183)at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:170)at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:152)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:303)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:221)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:253)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:125)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567)at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517)at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:744) 没有经过我Person [age=5214, birth=null]
刚开始我一致想不明白,为什么会报这个错误,哪里报的这个错误,更不要说怎么解决了,今天早上起来后,我就分析,报了这个错误,就是说 ,这个错误被代码catch了,没有被抛出来,如果我现在让它被抛出来,在前台以“您输入的时间格式错误。”的形式显示给用户,不就可以了吗?
在接着分析,那么是哪里报的这个错误呢?既然是类型转换时出的错误,那么就应该是自定义的类型转换器中报的错,再次查看代码 ,在代码
/** * 字符串转 为Date类型 */@Overridepublic Object convertFromString(Map context, String[] values, Class toClass) {System.out.println("convertFromString....");if(toClass == Date.class){if(values != null && values.length > 0){String value = values[0];try {return getDateFormat().parseObject(value);} catch (ParseException e) {e.printStackTrace();}}}//若没有转换成功,则返回valuesreturn values;}中有一个catch 上面的错误有可能就是被它抓到的,然后在其前后的添加如下的打印代码
catch (ParseException e) {System.out.println(" 经过我");e.printStackTrace();System.out.println(" 没有经过我");}
java.text.ParseException: Format.parseObject(String) failedconvertFromString.... 经过我at java.text.Format.parseObject(Format.java:245)at com.baidu.action.conversion.DateConverter.convertFromString(DateConverter.java:45)at org.apache.struts2.util.StrutsTypeConverter.convertValue(StrutsTypeConverter.java:52)at com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter.convertValue(DefaultTypeConverter.java:92)at com.opensymphony.xwork2.conversion.impl.XWorkConverter.convertValue(XWorkConverter.java:314)at com.opensymphony.xwork2.ognl.OgnlTypeConverterWrapper.convertValue(OgnlTypeConverterWrapper.java:39)at ognl.OgnlRuntime.getConvertedType(OgnlRuntime.java:1081)at ognl.OgnlRuntime.getConvertedTypes(OgnlRuntime.java:1098)at ognl.OgnlRuntime.getConvertedMethodAndArgs(OgnlRuntime.java:1124)at ognl.OgnlRuntime.getAppropriateMethod(OgnlRuntime.java:1210)at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1224)at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1503)at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2432)at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:81)at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2432)at ognl.ASTProperty.setValueBody(ASTProperty.java:127)at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)at ognl.SimpleNode.setValue(SimpleNode.java:301)at ognl.Ognl.setValue(Ognl.java:737)at com.opensymphony.xwork2.ognl.OgnlUtil$1.execute(OgnlUtil.java:293)at com.opensymphony.xwork2.ognl.OgnlUtil$1.execute(OgnlUtil.java:288)at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecute(OgnlUtil.java:346)at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:288)at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:183)at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:170)at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:152)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:303)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:221)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:253)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:125)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567)at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517)at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:744) 没有经过我Person [age=5214, birth=null]既然知道是它报的错,下面的就,so easy。让它把问题报出来就好了!
修改后的代码如下
/** * 字符串转 为Date类型 * 问题的解决:仅仅是把catch 中的 e.printStackTrace(); * 换成了 throw new TypeConversionException(); * 问题就解决了! */@Overridepublic Object convertFromString(Map context, String[] values, Class toClass) {System.out.println("convertFromString....");if(toClass == Date.class){if(values != null && values.length > 0){String value = values[0];try {return getDateFormat().parseObject(value);}catch (ParseException e) {throw new TypeConversionException();}}}//若没有转换成功,则返回valuesreturn values;}
I am happy!
1 0
- 自定义 Date类型转换是报
- 自定义tag标签-实现long类型转换成Date类型
- 自定义tag标签-实现long类型转换成Date类型
- 为struts2自定义类型转换器:Date的转换
- FastJson Date类型自定义
- date类型转换
- date 类型转换表
- date类型转换
- Date类型转换
- Date转换String类型
- struts2--Date类型转换
- Date类型转换
- String类型转换Date类型
- solr ①date类型处理+②自定义field 改为int型。报错处理
- spring mvc开发接收日期字段表单提交,自动转换成Date类型报错,解决办法
- spring mvc开发接收日期字段表单提交,自动转换成Date类型为什么报错?
- String转换成date类型
- Struts2 Date类型转换问题
- Andrdoid中对应用程序的行为拦截实现方式之----从底层C进行拦截
- Spring boot + maven + jetty9在提交表单的时候出现Form too large
- Nginx负载均衡+监控状态检测
- 【代码笔记】iOS-评分,支持我们
- IDEA设置Java类注释
- 自定义 Date类型转换是报
- C# 判断文件夹存在与否并创建文件夹
- Linux自启动执行命令
- please verify the preference field with the prompt:null
- jquery+php实现赞,踩功能
- (总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)
- <linux kernel>plz do not use usleep(0)!
- 机器学习之逻辑回归
- 每天laravel-20160804| Container -7