在.jsp中我会使用:
<fmt:message key="welcome.title"/>
Run Code Online (Sandbox Code Playgroud)
从我的messages.properties文件中显示一条消息.
我如何用freemarker做到这一点?
在我的Spring应用程序中,我想使用FreeMarker生成将由我的应用程序发送的电子邮件文本.生成的文本永远不会返回到视图,因此我不需要配置FreeMarker视图解析器.该文档似乎表明我应该像这样配置一个FreeMarkerConfigurationFactoryBean
<bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
一旦我配置了这个bean,我如何实际获得为特定模板生成的文本,以及特定的变量Map.换句话说,后面是什么代码:
String templateName = "email"
Map templateVars = new HashMap();
templateVars.put("firstName", "john");
templateVars.put("surname", "doe");
// Now how do I get the template text?
Run Code Online (Sandbox Code Playgroud)
Spring模块似乎提供了Spring和FreeMarker之间的另一种集成,这使得检索模板文本非常明显,但我不想在我的应用程序中添加额外的依赖项,除非绝对必要.
另外,我是否需要在FreeMarkerConfigurationFactoryBean中添加一些额外的配置以确保缓存模板?
干杯,唐
FreeMarker模板支持使用以下语法的if语句
<#if hot>
It's hot.
</#if>
Run Code Online (Sandbox Code Playgroud)
我查看了文档,找不到if-else语句的任何支持.当然,我可以通过以下方式获得相同的结果:
<#if hot>
It's hot.
</#if>
<#if !hot>
It's not hot.
</#if>
Run Code Online (Sandbox Code Playgroud)
在FreeMarker中是否支持if-else?
我完全不确定这是否是一个可解决的问题,但假设我有一个freemarker模板,我希望能够向模板询问它使用的变量.
出于我的目的,我们可以假设freemarker模板非常简单 - 只是"根级"条目(这种模板的模型可以是一个简单的Map).换句话说,我不需要处理调用嵌套结构等的模板.
我想在freemarker中将字符串转换为数字.我想根据数字的值进行一些条件检查.?号似乎不起作用.
有什么建议?
在我的if语句中,我想将一个变量(JDK 1.5枚举)与枚举文字进行比较.例如:
<#if type == ProblemStatisticType.BEST_SOLUTION_CHANGED>
...
</#if>
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个例外:
freemarker.core.InvalidReferenceException: Expression ProblemStatisticType is undefined on line 430, column 87 in index.html.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我在我的应用程序中使用freemarker模板
在将我的应用程序部署到jar文件之前,我需要做的就是加载我的模板: cfg.setDirectoryForTemplateLoading(new File("templates"));
其中加载了我在项目中创建的模板文件夹中的所有模板.
现在,在转移到maven并将我的应用程序部署到可执行jar之后.应用程序无法再找到此文件夹(我已在.jar文件中检查,并且"templates"文件夹已部署在根目录中)
我已经尝试过我所知道的一切,但没有运气.
我现在应该如何加载我的所有模板?(我假设如果我将文件夹放在.jar文件之外但在同一目录中它将起作用.但这不是我想要的.)
谢谢.
你能为GAE推荐一个模板引擎吗?我喜欢Wicket,但它带有很多服务器端状态,这与GAE方法不兼容.
GAE 是否支持FreeMarker?
编辑
我对模板引擎的主要要求是:
我在java代码中有一个字符串列表:
List<String> keywords = new ArrayList<String>();
keywords.add("Apple");
keywords.add("Banana");
Run Code Online (Sandbox Code Playgroud)
我想使用Freemarker显示关键字:Apple,Banana
怎么做?
PS:我通读了手册并发现了一些建议使用的文章<#list>,但输出结果是:Apple
香蕉
JSP是否提供了比FreeMarker更多的灵活性,还是以其他方式?我的后端涉及Servlets.在什么情况下使用哪一个?
freemarker ×10
java ×8
spring ×2
templates ×2
jsp ×1
list ×1
maven ×1
servlets ×1
spring-mvc ×1
wicket ×1