11.struts2_通用标签

来源:互联网 发布:淘宝销量技巧 编辑:程序博客网 时间:2024/06/03 15:19


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>