标签: freemarker

如何检查FreeMarker模板中是否存在变量?

我有一个Freemarker模板,其中包含一堆占位符,在处理模板时会为其提供值.如果提供了userName变量,我想有条件地包含模板的一部分,如:

[#if_exists userName]
  Hi ${userName}, How are you?
[/#if_exists]
Run Code Online (Sandbox Code Playgroud)

但是,FreeMarker手册似乎表明if_exists已被弃用,但我找不到另一种方法来实现这一点.当然,我可以简单地提供一个额外的布尔变量isUserName并使用如下:

[#if isUserName]
  Hi ${userName}, How are you?
[/#if]
Run Code Online (Sandbox Code Playgroud)

但是如果有一种检查userName是否存在的方法,那么我可以避免添加这个额外的变量.

java templates freemarker

166
推荐指数
4
解决办法
22万
查看次数

IntelliJ无法正确识别特定文件,而是卡在文本文件中

我的IntelliJ项目中有一个freemarker文件(ftl)被错误地识别为文本文件.有许多相同的类型是正确的.我知道"标记为文本"选项.这可能是此文件被标记为文本的原始原因,但我没有提供"标记为ftl文件"选项将其关闭,如果确实这是问题.如果我将其他ftl文件标记为txt,我可以按预期将它们重新转换为ftl文件.

java freemarker file-type intellij-idea

97
推荐指数
6
解决办法
5万
查看次数

我为什么要使用模板引擎?jsp include和jstl vs tiles,freemarker,velocity,sitemesh

我即将选择组织我的观点(使用spring-mvc,但这不应该太重要)

据我所知,有6个选项(尽管它们并不相互排斥):

  • 瓷砖
  • SiteMesh的
  • Freemarker的
  • 速度
  • <jsp:include>
  • <%@ include file="..">

TilesSitemesh可以分组; 所以可以的Freemarker速度.每个小组中使用哪一个不是这个讨论的问题,有足够的问题和讨论.

这是一个有趣的读物,但不能说服我使用瓷砖.

我的问题是 - 这些框架提供的内容 <@ include file="..">与JSTL 无法正常完成.要点(一些来自文章):

  1. 包括部分页面,如页眉和页脚 - 之间没有区别:

    <%@ include file="header.jsp" %>
    
    Run Code Online (Sandbox Code Playgroud)

    <tiles:insert page="header.jsp" />
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在标题中定义参数 - 如标题,元标记等.这非常重要,尤其是从SEO的角度来看.使用模板选项,您只需定义每个页面应定义的占位符.但是你可以在jsp中使用JSTL,使用<c:set>(在包含页面中)和<c:out>(在包含的页面中)

  3. 布局重组 - 如果要在菜单上方移动面包屑,或在另一个侧面板上方移动登录框.如果页面包含(使用jsp)组织不当,则可能需要在这种情况下更改每个页面.但是如果你的布局不是太复杂,并且你把常见的东西放在页眉/页脚中,就没有什么可担心的了.

  4. 公共组件和特定内容之间的耦合 - 我没有发现这个问题.如果要重用某些片段,请将其移动到不包含任何页眉/页脚的页面,并在需要的地方包含它.

  5. 效率 - <%@ include file="file.jsp" %>比其他任何东西都更有效,因为它被编译一次.所有其他选项都被解析/执行多次.

  6. 复杂性 - 所有非jsp解决方案都需要额外的xml文件,其他包括,预处理器配置等.这既是学习曲线又是引入更多潜在的失败点.此外,它使支持和更改变得更加乏味 - 您必须检查许多文件/配置以了解正在发生的事情.

  7. 占位符 - 速度/自由标记比JSTL更多吗?在JSTL中,您放置占位符,并使用模型(放置在请求或会话范围内,由控制器)来填充这些占位符.

所以,说服我除了普通的JSP之外我应该使用上面的任何框架而不是/.

java jsp velocity freemarker tiles

95
推荐指数
4
解决办法
3万
查看次数

什么是FTL文件

我是一个项目的新手,必须从内到外学习.我看到很多带有扩展名的文件.ftl.我不确定它们是什么.我知道它们可以被修改,用户可以看到前端的变化.

java freemarker

82
推荐指数
5
解决办法
10万
查看次数

Freemarker迭代hashmap键

Freemarker有两种集合数据类型,列表和hashmaps有没有办法迭代hashmap键,就像我们对列表一样?

所以,如果我有一个带数据的var,那就说:

user : {
  name : "user"
  email : "looser@everything.com"
  homepage : "http://nosuchpage.org"
}
Run Code Online (Sandbox Code Playgroud)

我想用它们的值打印所有用户的属性.这是无效的,但目标很明确:

<#list user.props() as prop>
  ${prop} = ${user.get(prop)}
</#list>
Run Code Online (Sandbox Code Playgroud)

java freemarker

82
推荐指数
4
解决办法
10万
查看次数

在Freemarker中处理空值

如何处理nullFreemarker中的值?当null数据中存在值时,模板中会出现一些例外情况.

freemarker

73
推荐指数
3
解决办法
11万
查看次数

速度与FreeMarker

Velocity还是FreeMarker?

他们看起来几乎一样,甚至是语法?

用什么?还是什么时候用?

java velocity template-engine freemarker

68
推荐指数
4
解决办法
5万
查看次数

区别??? ,free_content,if_exists在freemarker中

freemarker中的以下内容有什么区别?

!
has_content
?? 
if_exists
Run Code Online (Sandbox Code Playgroud)

我用了 ??而不是has_content&它导致如此巨大的问题.搞砸了我的一天.我真的需要弄清楚这件事.

我用的时候

!(xyz.abc!)?? -- it dint work
Run Code Online (Sandbox Code Playgroud)

我用的时候

!(xyz.abc!)?has_content ... it did work 
Run Code Online (Sandbox Code Playgroud)

不?或has_content或if_exists检查相同的事情?

freemarker

60
推荐指数
1
解决办法
6万
查看次数

如何从FreeMarker模板调用对象上的java方法?

是否可以调用从Freemarker模板获取参数的方法?

我有一个对象模型,我试图用Freemarker渲染到一个网页.其中一个对象有一个获取其内容子列表的方法 - 获取用于过滤列表的参数:

public List getunits(final String type);

我知道在JSP中你不能直接这样做,但是你可以编写自定义函数来实现你想要的结果.你如何在Freemarker中解决这个问题?编写自定义函数是一样的吗?或者有没有办法实际调用这种功能?

java freemarker

42
推荐指数
2
解决办法
5万
查看次数

41
推荐指数
2
解决办法
3万
查看次数