相关文章
以下为今日内容:
属性信息
MVEL的属性信息保持了其他bean一般通常使用的形式,略有区别的是,MVEL为访问属性、静态信息、Map等提供了统一的访问形式
Bean属性
正如我们熟悉的Java语言一样,MVEL支持我们常用的get写法,比如:
student.getManager().getName();
为了简化操作,MVEL也支持我们这样来写:
student.manager.name
官方提醒:在对象中的字段是公开的的情况下,MVEL 仍然倾向于通过它的获取方法访问属性。
判空取属性
有的时候我们可能并不确定一个值是不是空的,这时我们可以使用判空操作:
student.?manager.name
这句话相当于下面的语句:
if (student.manager != null) { return student.manager.name; } else { return null; }
List&Array获取
在List或Array获取的时候,我们使用方括号并在其中放置需要获取的索引,比如:
students[5]
这相当于我们的Java代码:
students.get(5);
Map访问
Map访问的形式和php有些类似,采用方括号内写属性的形式获取,比如:
students["zhang"]
这相当于我们的Java代码:
students.get("zhang");
如果Map的key是String的时候,他可以接受一种特殊的写法:
students.zhang
字符串拆分数组
MVEL支持将字符串拆分成类似于 String.charAt() 的形式,比如:
foo = "My String";
foo[0]; // returns 'M';
文本
正如字面意思,文本是指在特定脚本的源文件中代表一个固定值。
普通文本
文本接受单引号或双引号包裹,比如:
"This is a string literal"
'This is also string literal'
字符串转义
\\ - 两个反斜线表示一个反斜线
\n - 换行
\r - 返回
\u#### - Unicode字符 (Example: \uAE00)
\### - 8进制字符 (Example: \73)
数字
整数支持表示为 10进制、8进制、16进制。
10进制表示就是正常书写:
252 //10进制
通过将数字的第一位置为0,将识别为8进制数字,我们可以使用0-7表示这个数字,比如:
0214 //8进制
通过添加 0x 前缀,将可以表示16进制数字,比如:
0xAFA0 //16进制
浮点型数字
一个浮点数由一个整数和一个由点字符表示的派生部分组成,还有一个可选的表示精度类型的后缀。
比如下面几种形式都是合法的:
10.503 // double类型
94.92d // double类型
14.5f // float类型
大数
MVEL允许用户通过结尾标识 B 或 I 表示大的整数或大的小数。注意的点是,大写是必须的。比如:
265.2992013B // 大的小数型
859823I // 大的整数型
布尔
布尔类型很好理解,表示为 true 或 false
空
空的场景需要使用保留关键字 null 或 nil 表示
类
类型字面的处理与Java中的基本相同,其格式如下。''<PackageName>.<ClassName>''。
因此,一个类可以被限定为这样:
java.util.HashMap
或者,如果该类已经被内联或外部配置导入,只需要写类名就可以,比如:
HashMap
这里推荐一篇栈溢出的问答:Import this class in MVEL and assign values to its property and access its method - Stack Overflow
嵌套类
在MVEL2.0中,嵌套类不能通过标准的点状符号(如Java)来访问。相反,你必须用符号 $ 来限定这些类,比如:
org.proctor.Person$BodyPart