我正在尝试将所有可用的变量转储到我的freemarker模板中.我试图使用类似的东西:
<#list .vars?keys as prop>
${prop} = ${.vars.get(prop)}
Run Code Online (Sandbox Code Playgroud)
</#list>
我在文档中读到.vars不支持密钥功能,但我正在使用上面的内容来展示我正在尝试做的事情.
这是我与Freemarker的第一天,所以任何建议都会很棒.
我想在freemarker模板中使用一些自定义标签,这很容易,因为我可以在我的web.xml文件中包含JspSupportServlet并在模板中包含以下行.
<#assign my=JspTaglibs["/WEB-INF/mytaglib.tld"] />
Run Code Online (Sandbox Code Playgroud)
但是,如果.tld捆绑在META-INF目录中的JAR文件中,我该怎么做呢?我试过这两个都没有运气.
<#assign my=JspTaglibs["/META-INF/mytaglib.tld"] />
<#assign my=JspTaglibs["/mynamespace"] />
Run Code Online (Sandbox Code Playgroud) 我有一组函数注释,我在迭代一个值列表时生成.我想在列表中捕获这些值"functions_names"并将其用于进一步处理.我怎样才能做到这一点?
谢谢
我的应用程序中的视图层的FreeMarker模板文件中有很多编码.
我想知道我是否可以使用Eclipse设置调试点.有没有可用于调试FreeMarker模板文件的好插件?
从json,我得到的价值
"createdOn": "Jan 08 2015 20:40:56 GMT+0530 (IST)",
Run Code Online (Sandbox Code Playgroud)
我正在访问FTL
<#list variables as variable>
<div class="reply">
${variable.createdOn}
</div>
</#list>
Run Code Online (Sandbox Code Playgroud)
我得到的结果是
Jan 09 2015 12:36:18 GMT+0530 (IST)
Run Code Online (Sandbox Code Playgroud)
我更喜欢的格式是
09-01-2015
我需要删除剩余的时间GMT,IST等.
如何在Freemarker模板或javascript中转换它.
更新
我试着像这样传递下面
${variable.createdOn?datetime?string("dd-MM-yyyy")}
Run Code Online (Sandbox Code Playgroud)
但它给出了错误
Exception: java.text.ParseException - Unparseable date: "Jan 09 2015 12:36:18 GMT+0530 (IST)"
Run Code Online (Sandbox Code Playgroud)
任何帮助都是赞赏的.
谢谢
我正在使用 spring 和 freemarker 并且有基本的工作。
我有一个类似的属性文件
help.text=For further information please see the <a href="{0}">help page</a>.
Run Code Online (Sandbox Code Playgroud)
我目前正在使用
${rc.getMessage("help.text")}
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何传入我的替换变量。你能帮我吗?
干杯,彼得
我有一个简单的类:
public class MyClass {
public final static long MAIN = 1;
@Setter @Getter
protected int id;
}
Run Code Online (Sandbox Code Playgroud)
(@Setter @Getter是lombokSetter 和 Getter 方法的注释。)
在 Freemarker 模板中,我想创建一个条件,如:
<#if myClassInstance.id == myClassInstance.MAIN>
Run Code Online (Sandbox Code Playgroud)
但是if表达式的右侧是根据 FreeMarker 未定义的。有没有办法做到这一点?谢谢!
根据文档,您应该能够将 javabean 传递给 FreeMarker 模板,并且它将能够访问 bean 的 getter。我一直在尝试这样做,但没有任何运气。这是我将 bean 传递给模板的代码。
public class Hello extends HttpServlet {
public static final Logger LOGGER = Logger.getLogger(Hello.class.getName());
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File(this.getServletContext().getRealPath("/templates")));
cfg.setObjectWrapper(new DefaultObjectWrapper());
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER);
cfg.setIncompatibleImprovements(new Version(2, 3, 20)); // FreeMarker 2.3.20
final String name = req.getParameter("name");
// This works when model is a Map, but not when it is a bean
Model model = new Model();
model.setUsername(name); …Run Code Online (Sandbox Code Playgroud) 这是我们的用例。我们正在从数据库加载 freemarker 语法并对其进行处理。我们正在处理近一百万条记录。一切正常。但是当我分析应用程序时,我发现我的 freemarker 处理方法是瓶颈,并且花费了大部分时间。阅读了 freemarker 文档后,我得到了一些关于我的问题的提示。每次我进行处理时,我都会创建新的 freemarker.template.Template 对象(创建它似乎很昂贵)。我找不到这样做的正确/更有效的方法。
Run Code Online (Sandbox Code Playgroud)public FTLTemplateEngine() { cfg = new Configuration(); } public String process(String template, Map<String, Object> input) throws IOException, TemplateException { String rc = null; final Writer out = new StringWriter(); try { final Template temp =new Template("TemporaryTemplate", new StringReader(template), cfg); temp.process(input, out); } catch (InvalidReferenceException e) { log.error("Unable to process FTL - " + template); throw new InvalidReferenceException("FTL expression has evaluated to null or it refers to something that doesn't exist. - …
FreeMarker 是否支持 Java 8 中的 Optional 值?
例如,我有 String id,它的 getter 方法是这样的:
public Optional<String> getId() {
return Optional.ofNullable(Id);
}
Run Code Online (Sandbox Code Playgroud)
我将如何在 .ftl 文件中引用它。似乎 {data.id} 找不到正确的 Optional 值。但给了我 Optional[1334586]
freemarker ×10
java ×4
jsp ×2
date ×1
eclipse ×1
java-8 ×1
javabeans ×1
javascript ×1
localization ×1
optional ×1
spring ×1
templates ×1