## 1.7 变量
[TOC]
### 1.7.1 临时变量
在模板中定义的变量成为临时变量,这类似js中采用var 定义的变量,如下例子
```javascript
<%
var a = 3;
var b = 3,c = "abc",d=true,e=null;
var f = [1,2,3];
var g = {key1:a,key2:c};
var i = a+b;
//多行文本,使用""" 或者''''
var c="""
hello go
"多行文本"
""";
%>
```
模板里定义的临时变量只能在当前模板中使用,如果想在子模板里使用,需要显示当着参数传递
### 1.7.2 全局变量
全局变量是通过在java代码里调用template.binding传入的变量,这些变量能在模板的任何一个地方,包括子模板都能访问到。如java代码里
```javascript
template.binding("list",service.getUserList());
//在模板里
<%
for(user in list){
%>
hello,${user.name};
<% } %>
```
自从2.8.0版本后,有一个特殊的变量成为root变量,当模板找不到变量的时候,会寻找root变量的属性来作为变量的值,这个root变量必须绑定为"_root"
```javascript
template.binding("_root",new User());
//在模板里,俩个都一样
${name}
${wife.name}
```
这里name 和 wife都是User对象的属性
### 1.7.3 共享变量
共享变量指在所有模板中都可以引用的变量,可通过groupTemplate.setSharedVars(Map<String, Object> sharedVars)传入变量,这些变量能用在 **所有模板** 的任何一个地方
```java
//.....
GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
// 设置共享变量
Map<String,Object> shared = new HashMap<String,Object>();
shared.put("name", "beetl");
gt.setSharedVars(shared);
Template t = gt.getTemplate("/org/beetl/sample/s0208/t1.txt");
String str = t.render();
System.out.println(str);
t = gt.getTemplate("/org/beetl/sample/s0208/t2.txt");
str = t.render();
System.out.println(str);
```
```javascript
//t1.txt
hi,${name}
//t2.txt
hello,${name}
```
### 1.7.4 模板变量
模板变量是一种特殊的变量,即可以将模板中任何一段的输出赋值到该变量,并允许稍后在其他地方使用,如下代码
```javascript
<%
var content = {
var c = "1234";
print(c);
%>
模板其他内容:
<% }; %>
```
第2行定义了一个模板变量content = { …} ; 此变量跟临时变量一样,可以在其他地方使用,最常见的用法是用于复杂的布局。请参考高级用法布局
### 1.7.5 申明变量类型
自从**3.10**以后的版本,使用var定义的变量,可以申明变量类型,如下
```javascript
<%
var<int> list = [1,2,3];
var<String,String> map = callFun();
var<String,Map<String,User>> map = callFun2();
%>
```
申明变量类型的格式类似Java的泛型,此申明也类似java泛型一样不会影响实际运行,仅仅作为辅助解释类型用,相当于注释.
Beetl语法中使用var关键字的地方,都可以使用泛型格式解释变量的类型,如for语句
```javascript
<%
for(var<org.test.UserItem> item in list){
print(item.getName());
}
%>
```
- 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 性能测试对比