beetl1.1 提供的安全输出总结
模板引擎往往在渲染模板的时候,变量往往不是预期值,如变量为null,引擎的空指针异常从而导致页面输出异常。beetl提供了一些安全输出。如下:
占位符异常,用于占位符
${!(user.name)} ,在占位符号使用!() ,括号里面出现异常,则不作任何输出
Missing Value,用于占位符
${user.wife.name!"N/A"} 如果user为空,或者 wife为空,则输出!后面的字符串
循环
在集合中,如果循环为空,则导致异常,可以在集合后面加上!表示如果集合为空,则忽略循环体,不作循环
<%for(user in list!){%>
循环体.................
<%}%>
可以看到模板的预编译代码如下:
if(list!=null){
int user_index = 0;
int user_size = list.size();
for(User user : list){
out.write(user_index);
out.write(__V0);
out.write(user.getName());
out.write(__VCR);
user_index++;
}
}
详细可以访问 http://beetl.sourceforge.net/,并下载最新jar包 1 楼 chenlei65368 2012-05-04 请教一下:
定义一个变量
<% var s=0;%> <!-- 报错 -->
<%if(root["keylist"].~size!=0) {%>
PRIMARY KEY (<%for(pk in root["keylist"]){%>${pk},<%}%>)
<%}%>
本来是想var s = root["keylist"]的。
直接赋值为0也是报错:
8|<% var s=0;%>
9|<%if(root["keylist"].~size!=0) {%>
10|
=============================================================
错误栈:
null
2 楼 chenlei65368 2012-05-04 <%for(pk in root["keylist"]){%>
<%if(pk_index-pk_size==-1){%> ${pk},
<%}%>
<%}%>)
<%}%>
if中进行运算会报语法错误<%if(pk_index-(pk_size-1)==0){%>
应该怎么写呢?