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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值