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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值