2010-03-05 43 views
0

我试图改变一个spring jsp示例使用freemarker。更改弹簧jsp日期输入绑定在一个窗体中使用freemarker

我改变了各个领域的形式是这样的: < @ spring.formInput “account.name”/>

一切都很好地工作。表单绑定到对象并且所有事情都经过了验证,但我无法让这部分工作。

< @ spring.formInput “account.renewalDate”/> JSP中它是

RENEWALDATE是java.util.Date对象。页面打开并且错误从日期输入字段应该在的位置开始。

方法public org.springframework.web.servlet.support.BindStatus org.springframework.web.servlet.support.RequestContext.getBindStatus(java.lang.String中) 抛出java.lang.IllegalStateException 扔在 [email protected] 上调用 指令时出现异常 [java.lang.String]有问题的 指令:---------- == > 作业: status = springMacroRequestContext.getBindStatus(path) [在第120行,第9列在s pring.ftl] 用户指令绑定[在线159, 第5列in spring.ftl] 用户指令spring.formInput [在 第36行,第41列in createForm.ftl] ----- -----程序员的Java回溯:---------- freemarker.template.TemplateModelException: 方法public org.springframework.web.servlet.support.BindStatus org.springframework.web.servlet .support.RequestContext.getBindStatus(java.lang.String中) 抛出java.lang.IllegalStateException 抛出异常不同的地址类型参数上 [email protected] 调用时[java.lang.String中,]在 freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:134) 在 freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:93) 在 freemarker.core .Expression.getAsTemplateModel(Expression.java:89) 在 freemarker.core.Assignment.accept(Assignment.java:90) 在 freemarker.core.Environment.visit(Environment.java:210) 在 的freemarker。 core.IfBlock.accept(IfBlock.java:82) at freemarker.core.Environment.visit(Environment.java:210) at freemarker.core.MixedContent.accept(Mixed Content.java:92) 在 freemarker.core.Environment.visit(Environment.java:210) 在 freemarker.core.Macro $ Context.runMacro(Macro.java:172) 在 freemarker.core.Environment .visit(Environment.java:603) 在 freemarker.core.UnifiedCall.accept(UnifiedCall.java:106) 在 freemarker.core.Environment.visit(Environment.java:210) 在 freemarker.core。 MixedContent.accept(MixedContent。Java的:92) 在 freemarker.core.Environment.visit(Environment.java:210) 在 freemarker.core.Macro $ Context.runMacro(Macro.java:172) 在 freemarker.core.Environment.visit (Environment.java:603) 在 freemarker.core.UnifiedCall.accept(UnifiedCall.java:106) 在 freemarker.core.Environment.visit(Environment.java:210) 在 freemarker.core.MixedContent。 accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:210) at freemarker.core.Environment.process(Environment.java:190) 在 freemarker.template.Template.process(Template.java:237) 在 org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:366) 在 org.springframework.web .servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:283) 在 org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:233) 在 org.springframework.web .servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798) 在 org.springframework.web.servlet .DispatcherServlet.doService(DispatcherServlet.java:716) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java :552) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:427) 在 org.eclipse.jetty .server.handler.ScopedHandler.handle(ScopedHandler.java:119) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:494) 在 org.eclipse.jetty.server.session.SessionHandler .handle(SessionHandler.java:182) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:933) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java :362) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 在 有机.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:245) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113) 在 org.eclipse.jetty .server.Server.handle(Server.java:330) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559) at org.eclipse.jetty.server.HttpConnection $ RequestHandler。headerComplete(HttpConnection.java:992) 在 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:541) 在 org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203) 在 org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462) 在 org.eclipse .jetty.util.thread.QueuedThreadPool $ 2.run(QueuedThreadPool.java:436) at java.lang.Thread.run(Unknown Source)引起者: org.springframework.core.convert.ConversionFailedException: 无法转换t值Sat Mar 05 15:49:22 EET 2011 from type 'java.util.Date'to type 'java.lang.String';嵌套异常 是java.lang.IllegalStateException: JodaTime库不可用 - 在 org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:40) 不支持在 org.springframework @DateTimeFormat。 core.convert.support.GenericConversionService.convert(GenericConversionService.java:138) 在 org.springframework.validation.AbstractPropertyBindingResult.formatFieldValue(AbstractPropertyBindingResult.java:122) 在 org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult。 java:227) at org.springframework.web.servlet.support.BindStatus。(BindStatu s.java:120) 处 sun.reflect org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:726) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(母语 法)。 NativeMethodAccessorImpl.invoke(未知 来源)维持在 java.lang.reflect.Method.invoke(未知 来源) sun.reflect.DelegatingMethodAccessorImpl.invoke(未知 来源)在 freemarker.ext.beans.BeansWrapper.invokeMethod( BeansWrapper.java:840) at freemarker.ext.beans.OverloadedMethodModel.exec(OverloadedMethodModel.java:104) ... 54 more java.lang.IllegalStateException: - @DateTimeFormat在 org.springframework.format.support.FormattingConversionServiceFactoryBean $ NoJodaDateTimeFormatAnnotationFormatterFactory.getPrinter(FormattingConversionServiceFactoryBean.java:131) 不支持在 org.springframework JodaTime库不可用造成的。 format.support.FormattingConversionServiceFactoryBean $ NoJodaDateTimeFormatAnnotationFormatterFactory.getPrinter(FormattingConversionServiceFactoryBean.java:1) 在 org.springframework.format.support.FormattingConversionService $ 1.Convert的(FormattingConversionService.java:78) 在 org.springframework.core.convert.support .ConversionUtils.invokeConverter(ConversionUtils.j AVA:37) ...... 65多个

回答

2

看看原因:

产生的原因:java.lang中。IllegalStateException异常:JodaTime库不可用 - @DateTimeFormat在

不支持您renewalDate场标注有@DateTimeFormat,除非添加JodaTime到classpath中不工作。