Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 如何使用java向Freemaker配置公开spring标记库并处理Freemarker模板类?_Spring Mvc_Freemarker_Spring Java Config - Fatal编程技术网

Spring mvc 如何使用java向Freemaker配置公开spring标记库并处理Freemarker模板类?

Spring mvc 如何使用java向Freemaker配置公开spring标记库并处理Freemarker模板类?,spring-mvc,freemarker,spring-java-config,Spring Mvc,Freemarker,Spring Java Config,我一直在尝试使用freemarker.template.template类来处理给定的.ftl模板。基本上,它找不到spring标记libs,遇到第一个标记时失败。但是,它读取spring宏指令的效果很好 在spring中附加我的freemarker配置和错误消息: 我正在使用Spring4和freemarker 2.3.23。在tomcat 7上运行Spring MVC应用程序时,它抱怨如下: ----FTL堆栈跟踪(“~”表示嵌套相关): -失败地址:@spring.url”/imports

我一直在尝试使用freemarker.template.template类来处理给定的.ftl模板。基本上,它找不到spring标记libs,遇到第一个标记时失败。但是,它读取spring宏指令的效果很好

在spring中附加我的freemarker配置和错误消息:

我正在使用Spring4和freemarker 2.3.23。在tomcat 7上运行Spring MVC应用程序时,它抱怨如下:

----FTL堆栈跟踪(“~”表示嵌套相关): -失败地址:@spring.url”/imports/app/vendor/boot…[在第5行第54列的模板“config/pages/default page.ftl”中] ----]根本原因FreeMarker模板错误:以下内容已计算为null或缺失: ==>spring[在第5行第56列的模板“config/pages/default page.ftl”中]

Java堆栈跟踪(针对程序员): ----freemarker.core.InvalidReferenceException:[…已打印异常消息;请参见上面的…]位于 freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:131) 在 freemarker.core.UnexpectedTypeException.NewDescriptionBuilder(UnexpectedTypeException.java:77) 在 freemarker.core.UnexpectedTypeException.(UnexpectedTypeException.java:40) 位于freemarker.core.NonHashException.(NonHashException.java:46) 在freemarker.core.Dot.\u eval(Dot.java:45)处 freemarker.core.Expression.eval(Expression.java:78)位于 accept(UnifiedCall.java:74)位于 freemarker.core.Environment.visit(Environment.java:324)访问 accept(MixedContent.java:54)位于 freemarker.core.Environment.visit(Environment.java:324)访问 freemarker.core.Environment.process(Environment.java:302)位于 freemarker.template.template.process(template.java:325)位于 com.isys.ghp.server.services.web.impls.HtmlRenditionComposer.composeRendition(HtmlRenditionComposer.java:43) 在 com.isys.ghp.controllers.app.RootControllerApp.welcome(RootControllerApp.java:48) 在 com.isys.ghp.controllers.app.RootControllerApp$$FastClassBySpringCGLIB$$cebaa583.invoke() 在 org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 在 org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:157) 在 org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.procedue(MethodInvocationProceedingJoinPoint.java:85) 在 com.isys.ghp.server.aspects.MethodLogger.around(MethodLogger.java:21) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:606) org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621) 在 org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610) 在 org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:68) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:168) 在 org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.procement(ReflectiveMethodInvocation.java:179) 在 org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653) 在 com.isys.ghp.controllers.app.RootControllerApp$$EnhancerBySpringCGLIB$$55180b14.welcome() 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:606) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 在 org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 在 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) 在 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:620) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.jav
@Bean 
public FreeMarkerViewResolver freemarkerViewResolver() {
    LOGGER.debug("Executing freemarkerViewResolver()");
    FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
    resolver.setExposeSpringMacroHelpers(true);  
    resolver.setExposeRequestAttributes(true);
    resolver.setCache(true); 
    resolver.setPrefix(""); 
    resolver.setSuffix(".ftl");
    return resolver; 
}

@Bean(name="fmAdvanceConfigFactoryBean")    
public FreeMarkerConfigurer getFreemarkerConfig() throws IOException, TemplateException  {
    FreeMarkerConfigurationFactoryBean freeMarkerConfigurationFactoryBean = new FreeMarkerConfigurationFactoryBean();
    FreeMarkerConfigurer result = new FreeMarkerConfigurer();
    result.setTemplateLoaderPath("/WEB-INF/views");
    result.setConfiguration(freeMarkerConfigurationFactoryBean.createConfiguration());
    return result;
}   
Template pageHTML = fmAdvanceConfigFactoryBean.getTemplate("config/pages/default-page.ftl");  
StringWriter pageWriter = new StringWriter();
Map<String, Object> map = new HashMap<>();
pageHTML.process(map, pageWriter);
    @Loggable
@Bean(name="fmAdvanceConfigFactoryBean")    
public FreeMarkerConfigurer getFreemarkerConfig() throws IOException, TemplateException  {
    Properties settings = new Properties(); 
    settings.setProperty("auto_import", "/spring.ftl as spring");
    FreeMarkerConfigurer result = new FreeMarkerConfigurer();
    result.setTemplateLoaderPaths("/WEB-INF/views","classpath:/");
    result.setFreemarkerSettings(settings);
    return result;
}