Struts2 標籤的使用

<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
	pageEncoding="GB18030"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Struts-Tags學習</title>
</head>
<body>
	<ol>
		<li>property: <s:property value="username" /></li>

		<!-- value中的字符串,struts會默認將其解析爲OGNL表達式,下列中,我們給username加上單引號後
		返回值就是username,而上例中返回的則是username的取值u -->
		<li>property 取值爲字符串: <s:property value="'username'" /></li>
		<li>property 設定默認值: <s:property value="admin" default="管理員" /></li>
		<!-- escape的默認值爲true,也就是轉意的意思 -->
		<li>property 設定HTML: <s:property value="'<hr/>'" escape="false" />
		</li>
		<hr />

		<!-- set中value的類型是Object,也就是說value="username"裏面的username是OGNL表達式,value的值是u; -->
		<li>set 設定adminName值(默認爲request 和 ActionContext): <s:set
				var="adminName" value="username" />
		</li>

		<li>set 從request取值: <s:property value="#request.adminName" />
		</li>
		<li>set 從ActionContext取值: <s:property value="#adminName" />
		</li>

		<li>set 設定範圍: <s:set name="adminPassword" value="password"
				scope="page" />
		</li>
		<li>set 從相應範圍取值: <%=pageContext.getAttribute("adminPassword")%></li>
		<!-- 也可以使用EL表達式來獲取值 -->
		<li>set 從相應範圍取值: ${pageScope.adminPassword}</li>

		<li>set 設定var,範圍爲ActionContext: <s:set var="adminPassword"
				value="password" scope="session" />
		</li>
		<!-- 下例中取不到值!! -->
		<li>set 使用#取值: <s:property value="#adminPassword" /></li>
		<li>set 從相應範圍取值: <s:property value="#session.adminPassword" /></li>


		<%-- <s:debug></s:debug> --%>
		<hr />

		<%--<li>push:<s:set name="myDog" value="new com.bjsxt.struts2.ognl.Dog('oudy')"></s:set></li>
		<li>
		push:<s:push value="#myDog">
			<s:property value="name"/>
		</s:push>
		</li>
		<li>push: <s:property value="name"/></li>
		--%>

		<!-- jsp的bean動作標籤和Struts2bean標籤的對比!! -->
		<jsp:useBean id="dog" class="com.bjsxt.struts2.tags.Dog" />
		<jsp:setProperty name="dog" property="name" value="pp" />
		<jsp:getProperty name="dog" property="name" />

		<hr />

		<li>bean 定義bean,並使用param來設定新的屬性值: <s:bean
				name="com.bjsxt.struts2.tags.Dog">
				<s:param name="name" value="'pp'"></s:param>
				<s:property value="name" />
				<%-- <s:debug></s:debug> --%>
				<!-- 在此處使用debug會看到值棧的棧頂會有dog對象 -->
			</s:bean> <s:debug></s:debug> <!-- 此處使用debug就看不到dog對象了,如果還想看到其對象,必須設置var將其壓入stack context中 -->
		</li>

		<!-- 如果想在Stack Context中看到bean的內容,必須設置var=""; -->
		<li>bean 查看debug情況: <s:bean name="com.bjsxt.struts2.tags.Dog"
				var="myDog">
				<!-- 注意value的值類型是Object,所以要加上單引號將其轉化爲字符串形式 -->
				<s:param name="name" value="'oudy'"></s:param>
			</s:bean> 拿出值: <s:property value="#myDog.name" /></li>
		<hr />

		<%-- 		<li>include _include1.html 包含靜態英文文件
		<s:include value="/_include1.html"></s:include>
		</li>
		
		<li>include _include2.html 包含靜態中文文件
		<s:include value="/_include2.html"></s:include>
		</li> --%>

		<li>include _include1.html 包含靜態英文文件,說明%用法 <s:set var="incPage"
				value="%{'/_include1.html'}" /> <!-- s:include中的value值爲字符串類型,所以要取值的話,需要使用百分號將其強制轉爲OGNL表達式!! -->
			<!-- 而s:property中的value值爲Object類型的,其默認爲OGNL表達式!! --> <s:include
				value="%{#incPage}"></s:include> <!-- 使用百分號表示強制將其解析爲OGNL表達式!! --></li>


		<hr />

		<li>if elseif else: age = <s:property value="#parameters.age[0]" />
			<br /> <s:set var="age" value="#parameters.age[0]" />
			<s:if test="#age < 0"> wrong age!</s:if> 
			<s:elseif test="#age < 20">too young!</s:elseif>
			<s:else>yeah!</s:else><br /> 
			<s:if test="#parameters.aaa == null">null</s:if>
		</li>

		<!-- 在JSTL標籤庫中用choose when 來代替if else if  -->
<%-- 		<!-- choose標籤!! if elseif -->
		<c:set var="score" value="${param.score }" />
		<c:choose>
			<c:when test="${score>100||score<0}">錯誤的分數:${score}</c:when>
			<c:when test="${score>=90 }">A</c:when>
			<c:when test="${score>=80 }">B</c:when>
			<c:when test="${score>=70 }">C</c:when>
			<c:when test="${score>=60 }">D</c:when>
			<c:otherwise>E</c:otherwise>
		</c:choose>
		 --%>
		<hr />


		<li>遍歷集合:<br /> <s:iterator value="{1, 2, 3}">
				<s:property /> |       <!-- 會自動將其列出!! -->
			</s:iterator></li>

		<li>自定義變量:<br /> <s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
				<s:property value="#x.toUpperCase()" /> |
		</s:iterator></li>
		
		<!-- 使用JSTL和EL的foreach完成迭代!! -->
         <%-- 		foreach遍歷數組!!
	    <% String[] string = {"xuxiang","edward"}; 
		  request.setAttribute("name", string);
	      %>
	    <c:forEach items="${name}" var="temp" varStatus="vs">  <!-- 循環狀態變量varStatus -->
		  ${vs.first}
		  ${temp} 
	    </c:forEach> --%>
		
		<li>使用status:<br /> 
		<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
			<s:property /> | 
			遍歷過的元素總數:<s:property value="#status.count" /> |
			遍歷過的元素索引:<s:property value="#status.index" /> |
			當前是偶數?:<s:property value="#status.even" /> |
			當前是奇數?:<s:property value="#status.odd" /> |
			是第一個元素嗎?:<s:property value="#status.first" /> |
			是最後一個元素嗎?:<s:property value="#status.last" />
				<br />
			</s:iterator></li>
		
		<!-- 定義map時必須加上一個# -->
		<li><s:iterator value="#{1:'a', 2:'b', 3:'c'}">
				<s:property value="key" /> | <s:property value="value" />
				<br />
			</s:iterator></li>

		<li><s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
				<s:property value="#x.key" /> | <s:property value="#x.value" />
				<br />
			</s:iterator></li>

		<li><s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>

		</li>
	</ol>

</body>
</html>

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