## 1.18 調用Java方法與屬性
可以通過符號@來表明后面表達式調用是java風格,可以調用對象的方法,屬性
```javascript
${@user.getMaxFriend(“lucy”)}
${@user.maxFriend[0].getName()}
${@com.xxxx.constants.Order.getMaxNum()}
${@com.xxxx.User$Gender.MAN}
<%
var max = @com.xxxx.constants.Order.MAX_NUM;
var c =1;
var d = @user.getWife(c).getName();
%>
```
可以調用instance的public方法和屬性,也可以調用靜態類的屬性和方法 ,需要加一個 @指示此調用是直接調用class,其后的表達式是java風格的。
- GroupTemplate可以配置為不允許直接調用Class以增強安全性,具體請參考配置文件.
- 也可以通過安全管理器配置到底哪些類Beetl不允許調用,具體請參考高級用法。默認情況,`java.lang.Runtime`,和 `java.lang.Process` 不允許在模板里調用。你自己的安全管理器也可以配置為不能直接訪問DAO類(避免了以前 JSP 可以訪問任意代碼帶來的危害)
- 重要:請按照 Java 規范寫類名和方法名,屬性名。這樣便于beetl識別到底調用的是哪個類,哪個方法。否則會拋出錯誤
- 可以省略包名,只用類名。beetl將搜索包路徑找到合適的類(需要設置配置`IMPORT_PACKAGE=包名.;包名.`,包名后需要跟一個`.`, 或者調用Configuration.addPkg)方法具體請參考附件配置文件說明
- 內部類(包括枚舉)訪問同java一樣,如User類有個內部枚舉類Gender,訪問是User$Gender
- 表達式是java風格,但參數仍然是 Beetl表達式,比如 `@user.sayHello(user.name)`。這里 `user.sayHello` 是 Java調用,`user.name` 仍然是 Beetl 表達式
注意:3.17版本后,由于安全原因,默認不在允許調用Java方法和屬性,如果需要,可以配置
```
NATIVE_CALL = true
NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager
```
- 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 性能測試對比