我一直试图使用FreeMarker.Template.Template类来处理给定的。FTL模板。Basiclaly没有找到spring标记libs,当遇到第一个<@spring.url.../>标记时会失败。但是,它可以读取spring宏指令。
我使用的是Spring4和freemarker 2.3.23。在Tomcat7上运行我的Spring MVC应用程序时,它抱怨以下问题:
----FTL堆栈跟踪(“~”表示与嵌套相关):-在:@spring.url“/imports/app/vendor/boot...[在模板”config/pages/default-page.FTL“中,第5行,第54列]时失败----]根本原因FreeMarker模板错误:以下计算结果为null或缺失:==>spring[在模板”config/pages/default-page.FTL“中,第5行,第56列]
MVCConfiguration的代码扩展了WebMvcConfigurerAdapter
@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;
}
新错误:
严重:对于路径为[/ghpwebapp]的上下文中的servlet[dispatcher]的servlet.service()抛出异常[请求处理失败;嵌套异常为freemarker.core.invalidreferenceException:以下内容已计算为null或丢失:==>springMacroRequestContext[在模板“spring.ftl”中,第89行,第134列]
----提示:如果已知失败表达式在法律上引用了有时为null或缺少的内容,可以指定默认值,如myoptionalvar!mydefault,或者使用<#If myoptionalvar??>when-present<#else>when-missing。(这些仅覆盖表达式的最后一步;要覆盖整个表达式,
----FTL堆栈跟踪(“~”表示与嵌套相关):-在以下位置失败:${springMacroRequestContext.getcontex...[在模板“spring.FTL”中,在宏“url”中,在第89行,第132列]-通过:@spring.url“/imports/app/vendor/boot...[在模板”config/pages/default-page.FTL“中,在第4行,第54列]----]到达,根本原因FreeMarker模板错误:以下计算结果为null或丢失:==>springMacroRequestContext[在模板”
----提示:如果已知失败表达式在法律上引用了有时为null或缺少的内容,可以指定默认值,如myoptionalvar!mydefault,或者使用<#If myoptionalvar??>when-present<#else>when-missing。(这些仅覆盖表达式的最后一步;要覆盖整个表达式,
---FTL堆栈跟踪(“~”表示与嵌套相关):-在:${SpringMacroRequestContext.GetContex...[在模板“Spring.FTL”中,在宏“URL”中,第89行,第132列]失败
Java堆栈跟踪(针对程序员):----freemarker.core.invalidreferenceException:[...Exception消息已经打印出来;请参阅上面的...]在freemarker.core.invalidreferenceException.getInstance(InvalidReferenceException.Java:134)在freemarker.core.explectionTypeException.newDesciptionBuilder(ExplectionTypeException.Java:85)在
我想spring
变量丢失是因为模板没有以<#import“/spring.ftl”作为spring>
开始,也没有为此配置自动导入。最后是比较方便的方法。类似于Properties settings=newSettings.setProperty(“auto_import”,“/spring.ftl as spring”);setFreeMarkerSettings(设置);
。
(顺便说一句,将FreeMarker升级到最新的2.x.x...2.3.23已经过时了。)
Exposing models over REST(将模型暴露给REST) 简介 REST 路径 使用 REST 路由 请求数据格式化 使用HTTP查询字符串传递JSON对象或数组 响应数据格式化 禁用 API Explorer 预定义的远程方法(remote methods) 暴露/隐藏 models, 方法, 端点(endpoints) 隐藏的方法和REST端点 案例: 只读端点(endpoi
我正在使用与Freemarker启动的Spring Boot。 给定以下字符串: 我试图对这个字符串执行一些验证,以确保它包含正确的Freemarker语法。 ----提示:如果已知失败的表达式在法律上引用了有时为null或缺少的内容,可以指定默认值,如myoptionalvar!mydefault,或者使用<#If myoptionalvar??>when-present<#else>when-
27.2 将Bean暴露给JMX MBeanExporter是Spring JMX 框架中的核心类。它负责把Spring bean注册到JMX MBeanServer。例如,下面的例子: package org.springframework.jmx; public class JmxTestBean implements IJmxTestBean { private Stri
我有一个kubernetes文件,如下所示: 如果我想将其公开给外界流量,因为假设我的应用程序在端口上使用prometheus公开应用程序指标...如何向外界公开该端口? 我的应用程序有以下两行代码启动需要公开的http服务器: 那是普罗米修斯服务器
我正在使用Smoks库进行XML到XML的转换。下面是Smoks配置。在freemarker模板中,我希望访问jdk库类以及我在项目中创建的类。请让我知道我如何实现这一点。
但是在我的群集上没有服务/部署: 谢谢你的帮助