Velocity !$ 和$!区别

本文详细解析了Velocity页面中的$!{obj}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Velocity 页面中 

$!{obj}  !符号表示如果可以取到值则显示值,如果取不到值或值为null,则输出空字符串即 ""

!${obj} !表示取反,和java中含义一样。

对于

#if(${obj})  //只有当${obj}为true或${obj}不为布尔类型并且不为null。

内容:$!{obj} //此处如果可以取到值则显示值,如果取不到值或值为null,则输出空字符串即 ""

#end


判断是否为null,也可以用这种方式

#if($null.isNull(${mycoll}))//为空,显示内容

内容

#end

另外判断是否为“”,只需

#if(${name} != "")

  内容

#end





### 比较FreemarkerVelocity模板引擎 #### 特点 Freemarker Velocity 都是流行的 Java 模板引擎,用于生成基于模板的文本输出。然而两者之间存在一些显著差异。 Freemarker 提供更丰富的内置函数支持宏定义的能力,允许开发者创建复杂的逻辑结构并重用代码片段[^1]。此外,Freemarker 支持多种数据模型接口以及更为灵活的数据访问方式。 相比之下,Velocity 的设计哲学更加倾向于保持简单性易读性,在语法上力求简洁明了,适合那些希望快速开发而不需要复杂功能的应用程序[^2]。 #### 性能表现 关于性能方面,通常情况下 Freemarker 可能在初次渲染时稍慢于 Velocity ,因为前者加载更多特性来支持高级功能;但在缓存机制下两者的差距会变得很小甚至可以忽略不计[^3]。对于大多数实际应用场景而言,这种微小的速度差别往往不会成为选择的关键因素。 #### 使用场景 当项目需求涉及到较为复杂的业务逻辑处理或是需要频繁更新视图层内容时,推荐选用 Freemarker 。它不仅能够很好地满足这些要求,还提供了良好的错误提示信息以便调试[^4]。 如果追求极致简易并且团队成员熟悉简单的脚本语言,则可以选择 Velocity 来加速前端页面或其他文档类型的生成过程[^5]。另外值得注意的是,由于其历史悠久且社区活跃度高,无论是在学习资源还是第三方库的支持程度上,这两款工具都表现出色。 ```java // 示例:使用Freemarker编写一个简单的HTML模板 <#list users as user> <div class="user"> Name: ${user.name}<br/> Email: ${user.email} </div> </#list> // 对应的Java代码部分可能如下所示: Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); cfg.setDirectoryForTemplateLoading(new File("/templates")); Template temp = cfg.getTemplate("users.ftl"); Writer out = new OutputStreamWriter(System.out); temp.process(root, out); // Velocity版本则相对简化了一些配置项 VelocityEngine ve = new VelocityEngine(); ve.init(); Template t = ve.getTemplate( "users.vm" ); VelocityContext context = new VelocityContext(); t.merge(context,out); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值