Struts2-7 通用标签

来源:互联网 发布:软件可靠性指标 编辑:程序博客网 时间:2024/05/16 09:15

 问题:Struts2是何时自动将Action对象放入到值栈中?
 解答:调试发现,Struts2在调用Action类对象的action方法前,先创建了一个StrutsActionProxy对象,再在对该对象进行初始化时将Action对象放入到值栈中。


1. *property 标签

 作用:用于输出值栈属性的值。
 
这里写图片描述

 注意:如果value属性没有给出,ValueStack栈顶对象的属性值被输出;且在多数情况下,JSP的EL表达式可以提供更简洁的语法。

* s:property: 打印值栈中的属性值,对于对象栈则打印其中对象的属性值  <br><br>商品名称:<s:property value="[0].productName"/>  <br><br>* 对于Map栈,则打印request、session或application的某个属性值 或 某个请求参数(parameters)的值  <br><br>会话时间:<s:property value="#session.date"/>            <br><br>用户姓名:<s:property value="#parameters.name[0]"/>  <br><br>

2. *url 标签

 作用:用于动态创建一个URL字符串。
 这里写图片描述

* s:url: 动态创建一个URL字符串(注意OGNL的自动解析)  <br><br><s:url value="/getProduct" var="url1">    <s:param name="productId" value="1001"></s:param>    <!-- 对于value值会自动进行OGNL解析 -->    <s:param name="productPrice" value="productPrice"></s:param>    <s:param name="date" value="#session.date"></s:param>    <!-- 对于value值会自动进行OGNL解析:如不希望解析则使用单引号 -->    <s:param name="productName" value="'Struts2'"></s:param></s:url><!-- URL字符串:/Struts2-5/getProduct?productId=1001&productPrice=19.9&productName=Struts2 -->URL字符串:${url1 }        <br><br><s:url action="testAction" namespace="/qiaobc" method="save" var="url2"></s:url><!-- 构建一个请求action的URL --><!-- URL字符串:/Struts2-5/qiaobc/testAction!save.action -->URL字符串:${url2 }        <br><br><!-- includeParams属性:默认为no,即不包含请求参数;get,包含get请求的请求参数;all --><s:url value="testIncludeParams" var="url3" includeParams="get"></s:url><!-- URL字符串:testIncludeParams?name=qiaobc -->URL字符串:${url3 }        <br><br>

3. *param 标签

 作用:用于将参数传递给包含着它的父标签。
 
这里写图片描述

 注意:

  • 无论value值时是否有使用OGNL强制解析符号(%{}),Struts2都会对其进行OGNL解析;
  • 如果想传递一个String类型的字符串作为参数值,必须把它用单引号括起来;
  • 可以把value属性的值写在开始标签和结束标签之间,利用这种方式来传递一个EL表达式的值。

4. *set 标签

 作用:用于在ValueStack值栈的ContextMap栈的Map对象中创建一个键值对。

这里写图片描述

* s:set: 向page、request、session或application域对象中添加一个属性值   <br><br><!-- 对于value值会自动进行OGNL解析 --><s:set name="productName" value="productName" scope="page"></s:set>商品名称:${pageScope.productName }     <br><br>

5. *push 标签

 作用:用于在标签起始时将一个对象压入对象栈,而在标签结束时将对象弹出栈。

这里写图片描述

* s:push: 把一个对象再标签开始后压入到值栈(对象栈)中,标签结束时弹出值栈  <br><br><!-- 对于value值会自动进行OGNL解析 --><s:push value="productDesc">商品描述:${productDesc }</s:push>  <br><br>

6. *if、else、elseif 标签

 作用:用于进行条件判断。

这里写图片描述

* s:if、 s:else、 s:elseif    <br><br><!-- 优势:可以直接使用值栈中的属性 -->处理器型号:<s:if test="productPrice > 1600">I7</s:if>          <s:elseif test="productPrice > 800">I5</s:elseif>          <s:else>I3</s:else>   <br><br>

7. *iterator 标签

 作用:用于对集合进行遍历,并将该集合中的元素依次压入和弹出值栈。

这里写图片描述

 注意:在开始执行时,iterator标签会先把IteratorStatus类的一个实例压入 ContextMap中,并在每次循环遍历时对其进行更新,故可将指向IteratorStatus对象的变量赋给status其属性。

 iterator标签的status属性值:

这里写图片描述


8. *sort 标签

 作用:用于对可遍历对象中的元素进行排序。

这里写图片描述


9. *date 标签

 作用:用于对Date对象进行格式化。

这里写图片描述

 注意:format属性的值必须是java.text.SimpleDateFormat类中定义的日期/时间格式之一。


10. *a 标签

 作用:该标签将呈现一个HTML超链接,其中可以采用OGNL强制解析符(%{attributeName})对属性进行OGNL自动解析。


11. action 标签

 作用:用于在页面上执行一个action请求,其会将当前Action对象压入值栈的ContextMao子栈中。

这里写图片描述


12. bean 标签

 作用:该标签将创建一个JavaBean,并将其压入值栈的ContextMap子栈中,与JSP中的useBean动作元素相似。

这里写图片描述


13. include 标签

 作用:用于将一个Servlet或JSP页面的输出包含到当前页面中来。
这里写图片描述


14. append 与 merge 标签

 作用:append标签用来合并可遍历对象,而merge标签用来交替合并可遍历对象。
 
这里写图片描述

这里写图片描述


15. generator 标签

 作用:用于生成一个可遍历对象,并将其压入值栈,直到标签结束时弹出。

这里写图片描述

 注意:如果在generator标签中配置converter属性,则生成的可遍历对象中的所有元素都会传递到该属性所指定的方法中进行必要的转换。

这里写图片描述


16. subset 标签

 作用:通过其decider属性来创建一个可遍历集合的子集。

这里写图片描述

这里写图片描述

0 0