## 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 性能测试对比