今天在項目中有用到 Struts2 的Checkbox,其中最重要的屬性為 Value跟fieldValue
EG:
<td>
<s:checkbox id="hotel.hotelRoom.vCR" name="hotel.hotelRoom.vCR"
value="%{hotel.hotelRoom.vCR.equals('false')?'false':'true'}" fieldValue="VCR" />
VCR
</td>
當在屬性中用到fileValue屬性,當該Checkbox項被選中時,那么在 Action中取值即為FiledValue所對應的值,當未被選中時,會有一個默認的值false;
value="%{hotel.hotelRoom.vCR.equals('false')?'false':'true'}" 當用戶提交選中的項后回到Input頁面,仍然能正確顯示用戶剛才所選中的項:
附:(轉載)
#、%和$符號在OGNL表達式中經常出現,而這三種符號也是開發者不容易掌握和理解的部分。在這里筆者簡單介紹它們的相應用途。
1.#符號的用途一般有三種。
1)訪問非根對象屬性,例如示例中的#session.msg表達式,由于Struts 2中值棧被視為根對象,所以訪問其他非根對象時,需要加#前綴。
實際上,#相當于ActionContext. getContext();#session.msg表達式相當于ActionContext.getContext().getSession(). getAttribute
("msg") 。
2)用于過濾和投影(projecting)集合,如示例中的persons.{?#this.age>20}。
3)用來構造Map,例如示例中的#{'foo1':'bar1','foo2':'bar2'}。
2.%符號
%符號的用途是在標志的屬性為字符串類型時,計算OGNL表達式的值。如下面的代碼所示:
構造Map
<s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />
<p>The value of key "foo1" is <s:property value="#foobar['foo1']" /></p>
<p>不使用%:<s:url value="#foobar['foo1']" /></p>
<p>使用%:<s:url value="%{#foobar['foo1']}" /></p>
3.$符號
$符號主要有兩個方面的用途。
在國際化資源文件中,引用OGNL表達式,例如國際化資源文件中的代碼:reg.agerange=國際化資源信息:年齡必須在${min}同${max}之間
。
在Struts 2框架的配置文件中引用OGNL表達式,例如下面的代碼片斷所示:
<validators>
<field name="intb">
<field-validator type="int">
<param name="min">10</param>
<param name="max">100</param>
<message>BAction-test校驗:數字必須為${min}為${max}之間!</message>
</field-validator>
</field>
</validators>