struts2 標籤的使用之一 s:if,siterator使用

dawn009發表於2014-09-03

struts2 的web 專案中為了方便的編寫jsp,標籤是最好的選擇

1:struts2 標籤庫的定義在**-core-版本號.jar META-INF 路徑下找到struts-tags.tld檔案;使用該標籤需要在web 專案裡面匯入標籤庫:
    A:在web.xml檔案  (預設 可以省略)

  1. <taglib>
  2.     <taglib-uri>/struts-tagstaglib-uri>
  3.     <taglib-location>/WEB-INF/lib/*.jartaglib-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}

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

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

D:直接讀取物件的另一種寫法
  1.  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. if test="choosed">if>
發現這個判斷無法正確執行,也許是ognl 是透過get方法來獲取物件的,如果在action 裡面有下面的方法;
  1. public String getChoosed(){
  2.     return "true";
  3. }
上面那個s:if可以正確執行 

最後注意一點:ognl和jstl標籤不能互相巢狀

------------------------------------------------------------------------------------------&gt>

struts2中iterator標籤的巢狀使用(if/else),並根據內容調整字型顏色

  1. <s:iterator value="MonitorSnInfos" id="MonitorSnInfos" status="s" var="MonitorSnInfos">  
  2. <tr>  
  3. <td><input type="checkbox" name="SN_choice" value="<s:property value="snName"/>" />td>  
  4. <td><s:property value="snName"/>td>  
  5. <td><s:property value="nodeId"/>td>  
  6. <td><s:property value="preNodeId"/>td>  
  7. <td><s:property value="oanFunction"/>td>  
  8. <td><s:property value="snuFunction"/>td>  
  9.   
  10. <s:if test="#MonitorSnInfos.cpuUtilizationRate > #MonitorSnInfos.cpuUtilizationThreshold">  
  11. <td style="color:#FF0000"><s:property value="cpuUtilizationRate"/>td>  
  12. s:if>  
  13. <s:else>  
  14. <td style="color:#0C0"><s:property value="cpuUtilizationRate"/>td>  
  15. s:else>  
  16.   
  17. <s:if test="#MonitorSnInfos.memoryUtilizationRate > #MonitorSnInfos.memoryUtilizationThreshold">  
  18. <td style="color:#FF0000"><s:property value="memoryUtilizationRate"/>td>  
  19. s:if>  
  20. <s:else>  
  21. <td style="color:#0C0"><s:property value="memoryUtilizationRate"/>td>  
  22. s:else>  
  23.   
  24. tr>  
  25. s:iterator> 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1262544/,如需轉載,請註明出處,否則將追究法律責任。

相關文章