请输入
菜单

模板引擎语法

定界符与占位符号

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

<%
var a = 2;
var b = 3;
var result = a+b;
%>
hello 2+3=${result}

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

<%
var a = "hi"; 
var c = ${a}+"test"; 
//应该是
var c = a+"test" %>

变量

模板中定义的变量成为临时变量,这类似js中采用var 定义的变量

<%
var a = 3;
var b = 3,d=true,e=null;
var f = [1,2,3];
var g = {key1:a,key2:bb};
var i = a+b;
//多行文本,使用""" 或者''''
var c="""
hello go
"多行文本"
""";
println(c);
%>

条件语句

<%
var a =true;
var b = 1;
if(a&&b==1){
    print("it's " + b);
}else if(a){

}else{

}
%>
<%
var b = 1;
switch(b){
        case 0:
                print("it's 0");
                break;
        case 1:
                print("it's 1");
                break;
        default:
                print("error");
}
%>

数学表达式

算术表达式

支持类似javascript的算术表达式和条件表达式,如+ - * / % 以及(),以及自增++,自减--

<%
var a = 1;
var b = "hi";
var c = a++;
var d = a+100.232;
var e = (d+12)*a;
var f = 122228833330322.1112h;
print(e);
%>

条件表达式

如 >,<,==,!=,>= , <= 以及 !, 还有 && 和 || ,还有三元 表达式

<%
  var a = 1;
var b="good";
var c = null;

if(a!=1&&b=="good"&&c==null){
  ......
}
%>

三元表达式如果只考虑 true 条件对应的值的话,可以做简化,如下两行效果是一样的。

<%
 var  a = 1 ;
%>
${a==1?"ok":''}
${a==1?"ok"}
 

函数调用

字符串

  • strutil.startWith ${ strutil.startWith("hello","he")} 输出是true
  • strutil.endWith ${ strutil.endWith("hello","o")} 输出是true
  • strutil.length ${ strutil. length ("hello")},输出是5
  • strutil.subString ${ strutil.subString ("hello",1)},输出是"ello"
  • strutil.subStringTo ${ strutil.subStringTo ("hello",1,2)},输出是"e"
  • strutil.split ${ strutil.split ("hello,joeli",",")},参数第一个是字符串,第二个是正则表达式。输出是数组:返回第一个是"hello",第二个是"joelli"
  • strutil.contain ${ strutil.contain ("hello,"el")},输出是true
  • strutil.toUpperCase ${ strutil.toUpperCase ("hello")},输出是HELLO
  • strutil.toLowerCase ${ strutil.toLowerCase ("hello")},输出是hello
  • strutil.replace ${ strutil.replace ("hello","lo","loooo")},输出是helloooo
  • strutil.format ${ strutil.format ("hello,{0}, my age is {1}","joeli",15)},输出是hello,joeli, my age is 15. 
  • strutil.trim 去掉字符串的尾部空格
  • strutil.formatDate var a = strutil.formatDate(user.bir,'yyyy-MM-dd')};
  • strutil.index var index = -strutil.index("abc","a");返回 索引0
  • strutil.lastIndex var index = strutil.lastIndex("aba","a");返回索引2

其它

  • date 返回一个java.util.Date类型的变量,如 date() 返回一个当前时间(对应java的java.util.Date); ${date( "2011-1-1" , "yyyy-MM-dd" )} 返回指定日期,date(ms),指定一个毫秒数。相当于调用java.util.Date(ms)
  • print 打印一个对象 print(name);
  • println 打印一个对象以及回车换行符号,回车换号符号使用的是模板本身的,而不是本地系统的.如果仅仅打印一个换行符,则直接调用println() 即可
  • nvl 函数nvl,如果对象为null,则返回第二个参数,否则,返回自己 nvl(user,"不存在")
  • isEmpty 判断变量或者表达式是否为空,变量不存在,变量为null,变量是空字符串,变量是空集合,变量是空数组,此函数都将返回true
  • isNotEmpty 同上,判断对象是否不为空
  • trim 截取数字或者日期,返回字符,如trim(12.456,2)返回"12.45",trim(date,'yyyy')返回"2024"
  • decode 一个简化的if else 结构,如decode(a,1,"a=1",2,"a=2","不知道了"),如果a是1,这decode输出"a=1",如果a是2,则输出"a==2", 如果是其他值,则输出"不知道了"
  • parseInt 将数字或者字符解析为整形 如 parseInt("123");
  • parseDouble 将数字或者字符解析为浮点类型 如parseDouble("1.23")
  • json,将对象转成json字符串,如 var data = json(userList) 可以跟一个序列化规则 如,var data = json(userList,"[*].id:i")

输出格式化

日期格式

<% var date = date(); %>
Today is ${date,dateFormat="yyyy-MM-dd"}.
Today is ${date,dateFormat}
salary is ${salary,numberFormat="##.##"}
 
最近修改: 2024-09-24