## 4.1 内置方法
[TOC]
### 4.1.1 常用内置方法
- **date** 返回一个java.util.Date类型的变量,如 date() 返回一个当前时间(对应java的java.util.Date); ${date( "2011-1-1" , "yyyy-MM-dd" )} 返回指定日期
- **print** 打印一个对象 print(user.name);
- **println** 打印一个对象以及回车换行符号,回车换号符号使用的是模板本身的,而不是本地系统的.如果仅仅打印一个换行符,则直接调用println() 即可
- **printFile** 直接答应文件,文件路径以模板根目录为相对目录,printFile(‘‘/common/header.html’’);
- **nvl** 函数nvl,如果对象为null,则返回第二个参数,否则,返回自己 nvl(user,"不存在")
- **isEmpty** 判断变量或者表达式是否为空,变量不存在,变量为null,变量是空字符串,变量是空集合,变量是空数组,此函数都将返回true
- **isNotEmpty** 同上,判断对象是否不为空
- has 变量名为参数,判断是否存在此全局变量,如 has(userList),类似于1.x版本的exist("userList"),但不需要输入引号了
- **assert** 如果表达式为false,则抛出异常
- trim 截取数字或者日期,返回字符,如trim(12.456,2)返回"12.45",trim(date,'yyyy')返回"2017"
- **trunc** 截取数字,保留指定的小数位,如trunc(12.456,2) 输出是12.45.不推荐使用,因为处理float有问题,兼容原因保留了
- **decode** 一个简化的if else 结构,如 ${decode(a,1,"a=1",2,"a=2","不知道了")},如果a是1,这decode输出"a=1",如果a是2,则输出"a==2", 如果是其他值,则输出"不知道了"
- debug 在控制台输出debug指定的对象以及所在模板文件以及模板中的行数,如debug(1),则输出1 [在3行@/org/beetl/core/lab/hello.txt],也可以输出多个,如debug("hi",a),则输出hi,a=123,[在3行@/org/beetl/core/lab/hello.txt]
- **parseInt** 将数字或者字符解析为整形 如 parseInt("123");
- **parseLong** 将数字或者字符解析为长整形,parseInt(123.12);
- **parseDouble** 将数字或者字符解析为浮点类型 如parseDouble("1.23")
- **range** 接收三个参数,初始值,结束值,还有步增(可以不需要,则默认为1),返回一个Iterator,常用于循环中,如for(var i in range(1,5)) {print(i)},将依次打印1234.
- **flush** 强制io输出。
- **json**,将对象转成json字符串,如 var data = json(userList) 可以跟一个序列化规则 如,var data = json(userList,"[*].id:i"),具体参考 [https://git.oschina.net/xiandafu/beetl-json](https://git.oschina.net/xiandafu/beetl-json)
- **pageCtx** ,仅仅在web开发中,设置一个变量,然后可以在页面渲染过程中,调用此api获取,如pageCtx("title","用户添加页面"),在其后任何地方,可以pageCtx("title") 获取该变量
- **type.new** 创建一个对象实例,如 var user = type.new("com.xx.User"); 如果配置了IMPORT_PACKAGE,则可以省略包名,type.new("User")
- **type.name** 返回一个实例的名字,var userClassName = type.name(user),返回"User"
- **global** 返回一个全局变量值,参数是一个字符串,如 var user = global("user_"+i);
- **cookie** 返回指定的cookie对象 ,如var userCook = cookie("user"),allCookies = cookie();
### 4.1.2 字符串相关方法
> strutil方法对参数均不做空指针检测,你可自定义方法来覆盖这些内置的方法
- **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. 具体请参考[http://docs.oracle.com/javase/6/docs/api/java/text/MessageFormat.html](http://docs.oracle.com/javase/6/docs/api/java/text/MessageFormat.html)
- **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
### 4.1.3 数组相关方法
- **array.range** 返回数组或者Collection一部分,接受三个参数,第一个是数组或者Collection子类,第二,三个参数分别是起始位置
- **array.remove** 删除某个数组或者Collection的一个元素,并返回该数组或者Collection.第一个是数组或者Collection子类,第二个参数是元素
- **array.add** 向数组或者Collection添加一个元素,并返回该数组或者Collection。第一个是数组或者Collection子类,第二个参数是元素
- array.contain 判断数组或者元素是否包含元素,如果包含,返回true。否则false。第一个是数组或者Collection子类,第二个参数是元素
- **array.toArray** 转化成数组,如array.toArray(1,2,"a");
- **array.collection2Array** 将java集合转化为数组 array.collection2Array([1,2,''])
### 4.1.4 正则表达式相关方法
- **reg.match(str,regex)** str为需要处理的字符串,regex是表达式
- **reg.replace(str,regex,replace)**,str为需要处理的字符串,regex是表达式,替换的字符串替换字符串
- **reg.find(str,regex)** 返回找到的符合表达式的第一个字符串,否则返回空字符串
- **reg.findList(str,regex)** 找到所有符合表达式的字符串,否则返回空列表
- **reg.split(str,regex)**,对字符串进行切分,返回列表
- **reg.split(str,regex,limit)** 同上,limit是最多返回个数
- Beetl 3 中文文档
- 第一部分 基础用法
- 1.1 安装
- 1.2 快速开始
- 1.3 模板基础配置
- 1.4 模板加载器
- 1.5 定界符与占位符
- 1.6 注释
- 1.7 变量定义
- 1.8 属性
- 1.9 数学表达式
- 1.10 循环语句
- 1.11 条件语句
- 1.12 异常捕获
- 1.13 虚拟属性
- 1.14 函数调用
- 1.15 安全输出(重要)
- 1.16 输出格式化
- 1.17 标签
- 1.18 调用Java方法与属性
- 1.19 严格MVC控制
- 1.20 指令
- 1.21 错误处理
- 1.22 Beetl小工具
- 1.23 Escape
- 第二部分 高级用法
- 2.1 配置GroupTemplate
- 2.2 自定义方法
- 2.3 自定义格式化函数
- 2.4 自定义标签
- 2.5 自定义虚拟属性
- 2.6 使用额外的资源加载器
- 2.7 自定义资源加载器
- 2.8 使用CompositeResourceLoader
- 2.9 自定义错误处理器
- 2.10 自定义安全管理器
- 2.11 注册全局共享变量
- 2.12 自定义布局
- 2.13 性能优化
- 2.14 定制输出
- 2.15 定制模板引擎
- 2.16 直接运行Beetl脚本
- 2.17 模板校验
- 第三部分 Web 集成
- 3.1 Web提供的全局变量
- 3.2 集成技术开发指南
- 3.3 Servlet集成
- 3.4 SpringMVC集成
- 3.5 Spring Boot集成
- 3.6 Jodd集成
- 3.7 JFinal4 集成方案
- 3.8 Nutz集成
- 3.9 Struts2集成
- 3.10 整合ajax的局部渲染技术
- 3.11 在页面输出错误提示信息
- 附录
- 4.1 内置方法
- 4.2 Spring相关函数
- 4.3 Spring security
- 4.4 shiro
- 4.5 内置格式化方法
- 4.6 内置标签函数
- 4.7 内置html标签
- 4.8 性能优化
- 4.9 Eclipse 插件
- 4.10 性能测试对比