изменение привязки ввода даты в JSP пружине в форме для использования freemarker - PullRequest
0 голосов
/ 05 марта 2010

Я пытаюсь изменить пример Spring JSP, чтобы использовать freemarker.

Я изменил все поля в форме примерно так: <@ spring.formInput "account.name" />

Все работало хорошо. Форма привязана к объекту, и все было проверено, но я не могу заставить эту часть работать.

<@ spring.formInput "account.renewalDate" /> В jsp это было

renewalDate - это объект java.util.Date. Страница открывается, и ошибка начинается там, где должно быть поле ввода даты.

Метод публичный org.springframework.web.servlet.support.BindStatus org.springframework.web.servlet.support.RequestContext.getBindStatus (java.lang.String) бросает java.lang.IllegalStateException бросил исключение при вызове на org.springframework.web.servlet.support.RequestContext@1b5c22f с аргументами типов [java.lang.String,] Проблематично инструкция: ---------- ==> назначение: состояние = springMacroRequestContext.getBindStatus (путь) [в строке 120, столбец 9 в spring.ftl] в пользовательской директиве bind [в строке 159, колонка 5 в весен.фтл] в пользовательская директива spring.formInput [on строка 36, столбец 41 в createForm.ftl] ---------- Java backtrace для программистов: ---------- freemarker.template.TemplateModelException: Метод публичный org.springframework.web.servlet.support.BindStatus org.springframework.web.servlet.support.RequestContext.getBindStatus (java.lang.String) бросает java.lang.IllegalStateException бросил исключение при вызове на org.springframework.web.servlet.support.RequestContext@1b5c22f с аргументами типов [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) в 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) в 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.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) в org.springframework.web.servlet.view.AbstractView.render (AbstractView.java:250) в 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) в org.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) в org.eclipse.jetty.server.HttpConnection.handleRequest (HttpConnection.java:559) в 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) на java.lang.Thread.run (неизвестно Источник) Вызывается: org.springframework.core.convert.ConversionFailedException: Невозможно преобразовать значение сб. Мар 05 15:49:22 EET 2011 от типа 'java.util.Date' для ввода 'Java.lang.String'; вложенное исключение является java.lang.IllegalStateException: Библиотека JodaTime недоступна - @DateTimeFormat не поддерживается в org.springframework.core.convert.support.ConversionUtils.invokeConverter (ConversionUtils.java:40) в org.springframework.core.convert.support.GenericConversionService.convert (GenericConversionService.java:138) в org.springframework.validation.AbstractPropertyBindingResult.formatFieldValue (AbstractPropertyBindingResult.java:122) в org.springframework.validation.AbstractBindingResult.getFieldValue (AbstractBindingResult.java:227) в org.springframework.web.servlet.support.BindStatus. (BindStatus.java:120) в org.springframework.web.servlet.support.RequestContext.getBindStatus (RequestContext.java:726) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестно Источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестно Источник) в java.lang.reflect.Method.invoke (Неизвестно Источник) в freemarker.ext.beans.BeansWrapper.invokeMethod (BeansWrapper.java:840) в freemarker.ext.beans.OverloadedMethodModel.exec (OverloadedMethodModel.java:104) ... еще 54 причины: java.lang.IllegalStateException: Библиотека JodaTime недоступна - @DateTimeFormat не поддерживается в org.springframework.format.support.FormattingConversionServiceFactoryBean $ NoJodaDateTimeFormatAnnotationFormatterFactory.getPrinter (FormattingConversionServiceFactoryBean.java:131) в org.springframework.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.java:37) ... еще 65

1 Ответ

2 голосов
/ 05 марта 2010

Посмотрите на причину:

Причина: java.lang.IllegalStateException: библиотека JodaTime недоступна - @DateTimeFormat не поддерживается в

Ваше поле renewalDate помечено @DateTimeFormat, которое не будет работать, если вы не добавите JodaTime в путь к классам.

...