11.struts2_通用標籤


1 Struts2何時將Action的對象放入值棧中?

放入時間:在調用Action類的Action方法時,但在之前會進行如下:

-->先創建一個StrutsActionProxy對象

-->在創建StrutsActionProxy之後,對其進行初始化時,把Action對象放入值棧中。

2  *property標籤

用來輸出值棧內,某個對象的屬性值。

<body>
	<s:debug></s:debug>
	<br>
	s:property:打印值棧中對象的屬性值<br>
	<s:property value="productName"/>
	<br>
	對於Map棧,打印reques session application的某個屬性值,或者某個請求參數值
	<br>
	<s:property value="#session.date"/>
	<br>打印某個請求參數(請求參數是數組對象):<br>
	<s:property value="#parameters.name[0]"/>
	
</body>

3.url標籤

url標籤用來動態創建一個URL

<br><br>
	s:url 創建一個URL地址
	<br><!-- 以下標籤會創建此url: /struts2-4/getProduct?productId=1001   -->
	<s:url value="/getProduct" var="url" >
		<s:param name="productId" value="2222"></s:param>
	</s:url>
	${url }
	<br><br><!-- param的value會自動進行OGNL解析,如果不想解析,就用單引號引出 -->
	<s:url value="/getProduct" var="url2" >
		<s:param name="productId" value="#session.date"></s:param>
	</s:url>
	${url2 }
	<br><br>
		<s:url value="/getProduct" var="url3" >
		<s:param name="productId" value="abcd"></s:param>
	</s:url>
	${url3 }
	
	<br><br><!-- 用單引號再次包圍後,就不會去值棧中查找  /struts2-4/getProduct?productId=abcd -->
		<s:url value="/getProduct" var="url4" >
		<s:param name="productId" value="'abcd'"></s:param>
	</s:url>
	${url4 }
	
	<br><br><!--構建一個請求Action的地址 /struts2-4/hcx/testAction!save.action  -->
	<s:url action="testAction" namespace="/hcx" var="url5" method="save"></s:url>
	${url5 }
	<br><br><!--includeParams的get參數:會在新url後帶上當前地址請求參數 :testUrl?name=hcx  -->
	<s:url value="testUrl" var="url6" includeParams="get"></s:url>
	${url6 }
	<br><br><!-- all會包涵到本頁的post參數,附加到url上 -->
	<s:url value="testUrl" var="url7" includeParams="all"></s:url>
	${url7 }
	<br><br>


4.set標籤

可以用來在以下Map對象中創建一個鍵值對。

ValueStack值棧的ContextMap值棧、Map類型的session對象、Map類型的application對象、Map類型的Request對象、Map類型的page對象


<br><br>
	<!-- 將key爲productNameTest value爲值棧中的poroductName的值放入request中,value會OGNL解析
			實際打印出來的是productName的值:CPU -->
	<s:set name="productNameTest" value="productName" scope="request"></s:set>
	productname:${requestScope.productNameTest }

5.push標籤

先在request中放入一個對象,然後使用push壓入值棧,在push標籤內部,直接輸出值棧中的內容

	<!-- 在標籤開始後壓入值棧,標籤結束時彈出值棧 -->
	<%
		Test test=new Test();
		test.setProductName("hcx");test.setProductDesc("100");
		request.setAttribute("ttt", test);
	 %>
	<s:push value="#request.ttt">
		push標籤測試productDsc:${productName }
	</s:push>



6.if,else和elseif標籤

test中可以直接使用值棧中的屬性,例子中就通過判斷值棧中product對象的productPrice,來進行區分。

<br><br>
	<s:if test="productPrice>1000">
			IIIIII7
	</s:if>
	<s:elseif test="productPrice>800">
			IIIII5
	</s:elseif>
	<s:else>
			I3
	</s:else>

7.iterator標籤

用於遍歷一個數組,Collection或Map,並把這個可遍歷對象的每一個元素依次壓入和彈出ValueStack棧。

	<%
		List<Test> tests = new ArrayList();
		tests.add(new Test("AA", "10"));
		tests.add(new Test("BB", "20"));
		tests.add(new Test("CC", "30"));
		tests.add(new Test("DD", "40"));
		request.setAttribute("tests", tests);
	%>
	<s:iterator value="#request.tests" status="status">
	 	<!-- status屬性可以打印 索引和個數-->
	 	${status.index }--${productName }----${productDesc }
	 	<br>
	</s:iterator>
	<br>
	-----------------
	<br>
	<s:iterator value="tests">
		${productName }----${productDesc }
	 	<br>
	</s:iterator>

8.sort標籤

現準備好實現Comparator接口的類,然後確定source,再引入域對象,內部進行iterator。

#attr :會從域對象中依次尋找對應的key的數據,搜尋範圍從 page>request>session>application

<br>排序<br>
	<!-- var代表放到域對象裏的key的值  先確定比較的comparator,然後把list放入域對象,再s:iterator遍歷-->
	<s:sort comparator="#request.ts" source="tests" var="newtests" >
		<s:iterator value="#attr.newtests">
			${productName }----${productDesc }
	 		<br>
		</s:iterator>
	</s:sort>


9.date標籤

<br><br>
	s:date 可以對Date對象進行排版
	<br>
	<s:date name="#session.date" format="yyyy-mm-dd" var="date2"/>
	date:${date2 }

10.a標籤


<br><br>
		<!-- a標籤可以生產url,在href裏用%{}進行強制OGNL解析 -->
		<s:iterator value="#request.tests" >
			<s:a href="testURl.action?name=%{productName}">${productName}--url</s:a>
		</s:iterator>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章