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>
- <%@ taglib prefix="s" uri="/struts-tags"%>
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
- <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>
在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 可以是如何的javaBean,也可以是基本屬性
D:直接讀取對象的另一種寫法
- <s:if test="%{aTransactionSummaryBean!=null}">
- <s:if test='%{isShowAll=="Y"||isShowAll==null||isShowAll==""}'>
- <li class="selected">
- </s:if>
- <s:else>
- <li>else
- </s:else>
F:直接拿Action裏面的boolean 貌似不xing
Action裏面
- private boolean choosed = true;
- public boolean isChoosed(){
- return choosed;
- }
- <s:if test="choosed"></s:if>
- public String getChoosed(){
- return "true";
- }
最後注意一點:ognl和jstl標籤不能互相嵌套