关于Struts2.0 标签中采用%{} 的处理原理
?项目中采用struts2.0时,常常使用计算表单式的处理源码原理解析:
例如:
?<s:set var="hasDeductAmount" value="%{bill.supplier.moneyPool>#amount?#amount:bill.supplier.moneyPool}"> </s:set>
上面的绿色为:value中值的表达式表示的值栈表达式为:去除%{}的表达式
bill.supplier.moneyPool>#amount?#amount:bill.supplier.moneyPool
备注: (1)原理看下面的源代码即可理解:
?????????? (2)#表示OGNL的表达式
?
<input name="billCon.amount" type="text" value="<s:property value='#hasDeductAmount'/>" />
Struts2.0中的每一个标签的都是以组件形式展示:
Component源代码如下:
?
?转自:http://topmanopensource.iteye.com/blog/570022
?
HTML标签的属性可以被赋值为一个静态的值或一个OGNL表达式。如果你在赋值时使用了一个OGNL表达式并把它用"%{"和"}"括了起来,这个表达式将会被求值。
比如,
????? 1、下面的label属性将被赋值字符串“useName”:
?????????? label="useName"
????? 2、而下面这个表达式使用了一个OGNL表达式userName,label属性的值将等于某一个动作类中的userName属性值:
?????????? label="%{useName}"
?????? 3、下面这个表达式将把label属性赋值为会话属性userName的值:
?????????? label="%{#session.userName}"
?????? 4、这个value属性将被赋值为6:
?????????? value="%{1 + 5}"