在webwork.properties中有这样一个属性:
### use alternative syntax that requires %{} in most places
### to evaluate expressions for String attributes for tags
webwork.tag.altSyntax=true
这个选项指定是否使用alternative syntax(二选一语法??),看了文档这个属性是为了是否使用alternative syntax而设置的。
在文档中有两个example:
1.uses the Tag Syntax
...
<ww:textfield label="'Cart item No.' + #rowstatus.index + ' note'"
name="'cart.items[' + #rowstatus.index + '].note'"
value="note" />
</ww:iterator>
在这里如果要为在一个字符串中引用一个变量时需要使用类似java的字符串连接语法: "string" + variant。这里因为是表达式语言,字符串和变量引用都被" "包括,那么表达式中的字符串用需要' '来说明。在解析时, ' ' 中的内容原样输出,没有被 ' ' 包括的就是变量了,xwork会在堆栈中查找对应的属性.这种情况相当于在servlet中输出html一样多了会让人眼花缭乱。
2.uses the altSyntax
<ww:iterator value="cart.items">
...
<ww:textfield label="Cart item No. %{#rowstatus.index} note"
name="cart.items[%{#rowstatus.index}].note"
value="%{note}" />
</ww:iterator>
使用这种语法时,当表达式中需要使用变量时,只要将对变量应用的表达式置于%{}中就可以了,在解析时会解析%{}中的key,在堆栈中查找对应的值填充该变量。这种格式相对于来说清晰明了,更像模板语言中的语法。
而webwork.tag.altSyntax=true就是选择对第二种语法的使用。这个altSyntax是在2.1.4被引入的,在2.2.2这个版本以前这个属性默认是false.在2.2.2种默认是true.