## 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 性能測試對比