struts2 標籤的使用之一 s:if

struts2 的web 項目中爲了方便的編寫jsp,標籤是最好的選擇

1:struts2 標籤庫的定義在**-core-版本號.jar META-INF 路徑下找到struts-tags.tld文件;使用該標籤需要在web 項目裏面導入標籤庫:
    A:在web.xml文件  (默認 可以省略)

  1. <taglib>
  2.     <taglib-uri>/struts-tags</taglib-uri>
  3.     <taglib-location>/WEB-INF/lib/*.jar</taglib-location>
  4. <taglib>
    B:在jsp 導入標籤的dingyi
  1. <%@ taglib prefix="s" uri="/struts-tags"%>
注意uri要一直,上面定義的是默認寫法
 
2:OGNL struts2 利用了內建的ognl表達式,它基於XWork,增加了對ValueStack的支持
,在jsp裏面通過ognl訪問屬性,struts2會自動搜尋棧內的所有實體。直到找到位置。
如:#person.address.ip 等於 person.getAddress().getIp();翻譯結果爲條用get方法
或是jstl的${person.address.ip}

<s:if>用法
A:直接寫表達式
  1. <s:set name='china' value='china'>
  2. <s:if test="${china=='china'}">show</s:if>
  3. result:  show
  4. <s:set name="count" value="99">
  5. <s:if test="${count>0}">bigger than 0</s:if>
  6. <s:else>not</s:else>
  7. result:  bigger than 0
B:在遍歷裏面使用判斷:
  1. <s:iterator id="id" value="label">
  2.     <s:if test="%{#id.attrValueId!=0}">
  3.         <s:property value="#id.attrValue" />
  4.                 <s:property value="#id.countAll" />                 <s:property value="#id.countRequest" /> 
  5.     </s:if>
  6.     <s:else>
  7.         <s:property value="#id.attrValue" />
  8.     </s:else>
  9. </s:iterator>
label是一個List<Attribu>  Attribu 包含屬性attrValueId和countAll
s:iterator域內這是id的值是"id",使用ognl讀取遍歷對象的方法是 #id
test="%{#id.attrValueId!=0}" 看子對象的屬性attrValueId是否爲0
<s:property value="#id.attrValue" /> 打印子對象的attrValue屬性

C:直接讀取對象
  1. <s:if test="request.price==null||request.price<=0">
  2. </s:if>
讀取對象request,判斷price是否小於0;
request 可以是如何的javaBean,也可以是基本屬性

D:直接讀取對象的另一種寫法
  1.  <s:if test="%{aTransactionSummaryBean!=null}">
E:多個條件的判斷
  1. <s:if test='%{isShowAll=="Y"||isShowAll==null||isShowAll==""}'>
  2.     <li class="selected">
  3. </s:if>
  4. <s:else>
  5.     <li>else
  6. </s:else>
isShowAll 爲Action 裏面的字符串屬性

F:直接拿Action裏面的boolean 貌似不xing
Action裏面
  1. private boolean choosed = true;
  2. public boolean isChoosed(){
  3.     return choosed;
  4. }
  5. <s:if test="choosed"></s:if>
發現這個判斷無法正確運行,也許是ognl 是通過get方法來獲取對象的,如果在action 裏面有下面的方法;
  1. public String getChoosed(){
  2.     return "true";
  3. }
上面那個s:if可以正確執行 
最後注意一點:ognl和jstl標籤不能互相嵌套
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章