struts2 的web 項目中爲了方便的編寫jsp,標籤是最好的選擇
1:struts2 標籤庫的定義在**-core-版本號.jar META-INF 路徑下找到struts-tags.tld文件;使用該標籤須要在web 項目裏面導入標籤庫:
A:在web.xml文件 (默認 能夠省略)
<taglib>
<taglib-uri>/struts-tags</taglib-uri>
<taglib-location>/WEB-INF/lib/*.jar</taglib-location>
<taglib>
B:在jsp 導入標籤的dingyi
<%@ 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:直接寫表達式
<s:set name='china' value='china'>
<s:if test="${china=='china'}">show</s:if>
result: show
<s:set name="count" value="99">
<s:if test="${count>0}">bigger than 0</s:if>
<s:else>not</s:else>
result: bigger than 0
B:在遍歷裏面使用判斷:
<s:iterator id="id" value="label">
<s:if test="%{#id.attrValueId!=0}">
<s:property value="#id.attrValue" />
<s:property value="#id.countAll" /> <s:property value="#id.countRequest" />
</s:if>
<s:else>
<s:property value="#id.attrValue" />
</s:else>
</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:直接讀取對象
<s:if test="request.price==null||request.price<=0">
</s:if>
讀取對象request,判斷price是否小於0;
request 能夠是如何的javaBean,也能夠是基本屬性
D:直接讀取對象的另外一種寫法
<s:if test="%{aTransactionSummaryBean!=null}">
E:多個條件的判斷
<s:if test='%{isShowAll=="Y"||isShowAll==null||isShowAll==""}'>
<li class="selected">
</s:if>
<s:else>
<li>else
</s:else>
isShowAll 爲Action 裏面的字符串屬性
F:直接拿Action裏面的boolean 貌似不xing
Action裏面
private boolean choosed = true;
public boolean isChoosed(){
return choosed;
}
<s:if test="choosed"></s:if>
發現這個判斷沒法正確運行,也許是ognl 是經過get方法來獲取對象的,若是在action 裏面有下面的方法;
public String getChoosed(){
return "true";
}
上面那個s:if能夠正確執行
最後注意一點:ognl和jstl標籤不能互相嵌套