<%@page import="com.struts.valueStack.PersonComparator"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="com.struts.valueStack.Person"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <s:debug></s:debug> <br> s:property: 打印值栈中的属性值的 : 关于于对象栈, 打印值栈中对象的属性值 <br><br> <s:property value="productName"/> <br><br> 对于 Map 栈, 打印 request , session , application 的某个属性值 或 某个请求参数的值 <br><br> <s:property value="#session.date"/> <br><br> <s:property value="#parameters.name[0]"/> <br><br> s:url: 创建一个 URL 字符串的 <br><br> <s:url value="/testUrl" var="url"></s:url> ${url } <br><br> <s:url value="/getProduct" var="url"> <s:param name="productId" value="10002"></s:param> </s:url> ${url } <br><br> <s:url value="/getProduct" var="url"> <!-- 对于 value 值会自动的 进行 OGNL 解析 --> <s:param name="productId" value="productId"></s:param> </s:url> ${url } <br><br> <s:url value="/getProduct" var="url"> <!-- 对于 value 值会自动的 进行 OGNL 解析 , 若不需要自动进行 OGNL 解析 则用单引号引起来--> <s:param name="productId" value="'productId'"></s:param> </s:url> ${url } <br><br> <!-- 构造一个请求的 action 的地址 --> <s:url action="testAction" namespace="/zhoujing" method="save" var="url"></s:url> ${url } <br><br> <s:url value="/testUrl" var="url" includeParams="get"></s:url> ${url } <br><br> s:set: 向 page ,request, session ,application 域对象中加入一个属性值 <br><br> <s:set var="productName" value="productName" scope="page" /> productName:^${pageScope.productName } <br><br> s:push: 把一个对象在标签开始后压入到值栈中, 标签结束时, 弹出值栈. <% Person person = new Person(); person.setName("zhoujing"); person.setAge(21); request.setAttribute("person", person); %> <br><br> <s:push value="#request.person"> push标签中:${name } </s:push> push标签外:---^${name }--- <br><br> s:if ,s:else if ,s:else: <br><br> ${requestScope.person.age } <!-- 可以直接使用值栈中的属性 --> <s:if test="#request.person.age < 18"> 少年 </s:if> <s:elseif test="#request.person.age < 12"> 儿童 </s:elseif> <s:else> 成年 </s:else> <br><br> s: iterator: 遍历集合 的.把这个遍历对象里的每一个元素依次压入和弹出. <% List<Person> persons = new ArrayList<Person>(); persons.add(new Person("BB",15)); persons.add(new Person("AA",10)); persons.add(new Person("CC",20)); request.setAttribute("persons", persons); %> <br><br> <s:iterator value="#request.persons"> ${name } --${age }<br> </s:iterator> <br><br> s:sort 可以对集合中的元素进行排序 <br><br> <% PersonComparator pc = new PersonComparator(); request.setAttribute("comparator", pc); %> <s:sort comparator="#request.comparator" source="#request.persons" var="persons2"></s:sort> <s:iterator value="#attr.persons2"> ${name } -- ${age }<br> </s:iterator> <br><br> s: date 可以对date对象进行排版 <br><br> <s:date name="#session.date" format="yyyy-MM-dd hh:mm:ss" var="date2"/> date:${date2 } <br><br> s:a 就是一个HTML 连接. <br><br> <s:iterator value="#request.persons"> <!-- 可以使用%{} 把属性包装起来, 使其进行强制的 OGNL 解析 --> <s:a href="getPerson.action?name=%{name}">${name }</s:a> </s:iterator> <br><br> <br><br> </body> </html>
最后打印出来的标签效果:
s:property: 打印值栈中的属性值的 : 关于于对象栈, 打印值栈中对象的属性值
周静
对于 Map 栈, 打印 request , session , application 的某个属性值 或 某个请求参数的值
17-7-27
zhoujing
s:url: 创建一个 URL 字符串的
/Struts2-3/testUrl
/Struts2-3/getProduct?productId=10002
/Struts2-3/getProduct?productId=10001
/Struts2-3/getProduct?productId=productId
/Struts2-3/zhoujing/testAction!save.action
/Struts2-3/testUrl?name=zhoujing
s:set: 向 page ,request, session ,application 域对象中加入一个属性值
productName:^周静
s:push: 把一个对象在标签开始后压入到值栈中, 标签结束时, 弹出值栈.
push标签中:zhoujing push标签外:---^---
s:if ,s:else if ,s:else:
21 成年
s: iterator: 遍历集合 的.把这个遍历对象里的每一个元素依次压入和弹出.
BB --15
AA --10
CC --20
s:sort 可以对集合中的元素进行排序
AA -- 10
BB -- 15
CC -- 20
s: date 可以对date对象进行排版
date:2017-07-27 09:03:25
s:a
BB AA CC
这里面还包括了 Product 和 Person 两个java类 和一个comparator 排序所用的类. 就不一一展示了..