2012-08-24 26 views
0

地圖在我的Velocity模板,我創造這樣的地圖:無法建立速度

#set($mymap.Map={"key":"value","key2":"value2"})        

我認爲,必須根據速度的文檔工作,但有一個錯誤:

HTTP Status 500 - Could not load Velocity template for URL [editEmployee.vsl]; nested exception is org.apache.velocity.exception.ParseErrorException: Lexical error: org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 44, column 36. Encountered: "{" (123), after : "" 

type Exception report 

message Could not load Velocity template for URL [editEmployee.vsl]; nested exception is org.apache.velocity.exception.ParseErrorException: Lexical error: org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 44, column 36. Encountered: "{" (123), after : "" 

description The server encountered an internal error (Could not load Velocity template for URL [editEmployee.vsl]; nested exception is org.apache.velocity.exception.ParseErrorException: Lexical error: org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 44, column 36. Encountered: "{" (123), after : "") that prevented it from fulfilling this request. 

exception 

org.springframework.core.NestedIOException: Could not load Velocity template for URL [editEmployee.vsl]; nested exception is org.apache.velocity.exception.ParseErrorException: Lexical error: org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 44, column 36. Encountered: "{" (123), after : "" 
    org.springframework.web.servlet.view.velocity.VelocityView.checkResource(VelocityView.java:270) 
    org.springframework.web.servlet.view.UrlBasedViewResolver.loadView(UrlBasedViewResolver.java:421) 
    org.springframework.web.servlet.view.AbstractCachingViewResolver.createView(AbstractCachingViewResolver.java:158) 
    org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:384) 
    org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:77) 
    org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1078) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1027) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 

root cause 

org.apache.velocity.exception.ParseErrorException: Lexical error: org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 44, column 36. Encountered: "{" (123), after : "" 
    org.apache.velocity.Template.process(Template.java:141) 
    org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:423) 
    org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:341) 
    org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:831) 
    org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:813) 
    org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:470) 
    org.springframework.web.servlet.view.velocity.VelocityView.getTemplate(VelocityView.java:501) 
    org.springframework.web.servlet.view.velocity.VelocityView.checkResource(VelocityView.java:260) 
    org.springframework.web.servlet.view.UrlBasedViewResolver.loadView(UrlBasedViewResolver.java:421) 
    org.springframework.web.servlet.view.AbstractCachingViewResolver.createView(AbstractCachingViewResolver.java:158) 
    org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:384) 
    org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:77) 
    org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1078) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1027) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 

還有就是我的聚甲醛與速度:

<dependency> 
      <groupId>org.apache.velocity</groupId> 
      <artifactId>velocity</artifactId> 
      <version>1.6.2</version> 
     </dependency> 
     <dependency> 
      <groupId>velocity-tools</groupId> 
      <artifactId>velocity-tools</artifactId> 
      <version>2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>velocity-tools</groupId> 
      <artifactId>velocity-tools-generic</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
      <version>3.1</version> 
     </dependency> 
+0

爲什麼要同時使用速度的工具2.0和速度的工具,一般1.4嗎? –

+0

我不知道哪些需要我包括這兩個) – ema

回答

2

這應該在速度工作。我嘗試以下簡單的片段,無論是在1.7和1.6.2,它打印正確的響應:

#set ($mymap = {}) 
#set ($mymap.Map={"key":"value","key2":"value2"}) 
$mymap 

打印:

{Map={key=value, key2=value2}} 

因此,請確保該錯誤確實是在這裏:

  1. 建議的錯誤位置(第44行,第36列)是否與您引用的行匹配?
  2. 如果您註釋掉該行,錯誤是否仍然存在?
  3. Spring的另一個組件是否預先處理了模板,這樣Velocity最終會看到另一件事,而不是你認爲的那樣?
    • 如果用更多的空格重新格式化代碼,錯誤仍然存​​在嗎?
  4. 如果使用這種替代語法,錯誤仍然存​​在嗎?
#set($discard = $mymap.put('Map', {'key':'value','key2':'value2'})) 
+0

非常感謝答覆Dumitriu!我發現我的錯誤。原因是速度的版本。我以爲我包括1.7,但它是1.4。 – ema

0

嘗試

#set($mymap={"key":"value","key2":"value2"})  
$mymap 
+0

您應該添加更多解釋性答案。謝謝。 – Pau