2.5. 定界符与占位符号

Beetl模板语言类似JS语言和习俗,只需要将Beetl语言放入定界符号里即可,如默认的是<% %> ,占位符用于静态文本里嵌入占位符用于输出,如下是正确例子

  1. <%
  2. var a = 2;
  3. var b = 3;
  4. var result = a+b;
  5. %>
  6. hello 2+3=${result}

千万不要在定界符里使用占位符号,因为占位符仅仅嵌在静态文本里,如下例子是错误例子

  1. <%
  2. var a = "hi";
  3. var c = ${a}+"beetl"; //应该是var c = a+"beetl"
  4. %>

每次有人问我如上例子为啥不能运行的时候,我总是有点憎恶velocity 带来的这种非人性语法

定界符和占位符 通常还有别的选择,如下定界符

  • @ 和回车换行 (此时,模板配置DELIMITER_STATEMENT_END= 或者 DELIMITER_STATEMENT_END=null 都可以)
  • #: 和回车换行
  • <!—: 和 —>
  • <!—# 和 —>
  • <? 和 ?>

占位符—#{ }-##

你也可以与团队达成一致意见来选择团队喜爱的定界符号和占位符号。

定界符号里是表达式,如果表达式跟定界符或者占位符有冲突,可以在用 “\” 符号,如

  1. @for(user in users){
  2. email is ${user.name}\@163.com
  3. @}
  4. ${[1,2,3]} //输出一个json列表
  5. ${ {key:1,value:2 \} } //输出一个json map,} 需要加上\