定义表达式
要定义符号,您必须使用表达式。 代理程序对表达式进行求值,以对符号指定值。
在表达式中使用数据
表达式可以使用以下数据:- 请求类型的输入数据符号
- 同一请求映射器定义中描述的其他符号
- 数字常数
- 字符串常量(以 " 定界,如 "string")
- 布尔常量(true、TRUE、false、FALSE)
- null 常量
有关输入数据符号的更多信息,请参阅表 2。
如果符号的值是 Java™ 类的实例化,那么表达式可以包含对该类中定义的字段和方法的引用。 要引用字段,请使用 symbol.fieldname。 要引用方法,请使用 symbol.methodname(parameters)。 方法调用必须返回一个值。 例如,可以将 Java 字符串方法与具有字符串值的符号配合使用。
要引用类的静态字段或方法,您还可以使用 classname.fieldname 和 classname.methodname(parameters)。
如果符号引用数组对象,那么表达式可以选择一个元素 (symbol[selector]) 并确定数组长度 (symbol.length)
运算符
您可以在表达式中使用以下运算符:
- 布尔运算符:AND、&、OR、|、NOT、!
- 比较:==、!=、GT、>、LT、<、GE、>=、LE、<=
- 数字运算符:+、-、*、/
- 用于强制执行求值顺序的括号:(、)
要点: 必须对 XML 中的符号 <、> 和 & 进行转义。 您也可以使用 GT(大于)、GE(大于或等于)、LT(小于)、LE(小于或等于)以及 AND 运算符。
通过使用 instanceof 运算符,表达式可以求出值是否是类的实例:
expression instanceof java.class.name
与 Java instanceof 运算符类似,此运算符生成布尔值。 在此示例中,如果 expression 值所属的类满足任何以下条件,值为 true:- 命名为 java.class.name
- 是由 java.class.name 标识的类的直接或间接子类。
- 直接或间接实现由 java.class.name 标识的接口。
new java.class.name(expression1, expression2, ... expressionN)
运算符优先级
运算符按优先级顺序进行求值。 同一优先级顺序的运算符从左向右进行求值。 您可以使用括号 ( 和 ) 来更改求值顺序。优先级顺序如下所示:
- . 运算符(方法调用或字段引用)
- [ ] (数组元素选择器)
- new
- !、NOT
- *, /
- +, -
- GT、>、LT、<、GE、>=、LE、<=、instanceof
- ==, !=
- AND、&
- OR、|
示例
$s1 >= ( 2 * ($s2.sampMethod($s3, true) + 1))