struts2通用标签
Struts2框架为我们提供了很多标签,这些标签总体上可以分为两类:通用标签和UI标签。通用标签分为两类:数据标签和控制标签。数据标签用于访问值栈中数据,控制标签用于控制呈现页面时数据执行流程。使用Struts 2框架的标签库,需要在页面引入以下代码:
<%@ taglib uri="/struts-tags" prefix="s"%>
数据标签:
property、set、push、param、bean、action、include、url、a、i18n、text、date、debug
1、property标签:
property标签用于输出值栈中对象的属性值,value属性就是要输出的值。如果没有执行value属性,那么默认就会输出栈顶对象
property标签的属性包括:
名称 | 是否必需 | 说明 |
---|---|---|
default | 否 | 如果value属性是null,则输出default的值 |
value | 否 | 进行求值的表达式 |
2、set标签:
set标签是将一个值赋给指定范围的变量。set标签的属性包括:
名称 | 是否必需 | 说明 |
---|---|---|
name | 是 | 变量的名字 |
value | 否 | 指定一个表达式,将计算的结果赋给变量。如果没有执行value属性,默认将栈顶对象赋给变量 |
scope | 否 | 变量的范围,有application、session、request、page和action(默认值) |
注意:在使用默认scope的值,即action范围的时候,value属性值会保存在request和OgnlContext(OGNL上下文)中。
action:
jsp:
结果:
3、push标签:
push标签的作用是将一个对象放入值栈中,所以push对象位于栈顶,但是push标签结束之后,栈顶的元素将会被删除,因此需要访问push的对象需要在push标签的内部访问。push标签只有属性value,这也是一个必需提供的属性。具体在开发中push标签的作用是简化对属性的访问。比如需要访问一个User对象的name属性和age属性,正常在jsp页面使用Struts 2标签库进行访问的方式是#request.user.name
和#request.user.age
(假设是request范围),而使用push标签,访问name属性的方式是:
<s:push value="#request.user">
姓名:<s:property value="name"/>
年龄:<s:property value="age"/>
</s:push>
4、param标签:
param标签通常是作为其他标签的子标签,用于为其他标签提供参数。param标签有两个非必需属性name和value。其中的name属性是要设置参数的名字,value则是该参数的值。使用param标签有两种方式:<param name="username" value="zhangsan"/>
和<param name="username">zhangsan</param>
。在第一种方式中,value属性并不会作为name属性的值,而是表达式对待,因此如果zhangsan属性是空的话,将得到null ,所以需要把value改成%{'zhangsan'}
。第二种访问方式是没有什么问题的。
5、bean标签:
bean标签相当于jsp中的useBean标签,bean标签通常用于实例化一个JavaBean对象,一个bean标签内部可以有多个param标签,用于为bean实例设置属性值(要求有set方法)。bean标签有两个属性:name和id。其中的name属性是要实例化的bean的完整类名,id用于指定一个名字,用于引用放入OgnlContext中的JavaBean对象。这里需要注意的是,出了bean标签,放入栈顶的实例(用bean标签创建的JavaBean对象会放入栈顶)会被移除。但是如果指定了id属性,在bean标签的外部就可以访问了。此时需要使用#符号。因此需要创建可以在bean标签的外部也可以访问到的bean实例,就需要指定id属性。
6、action标签:
通过指定action的名字和可选的命名空间,action标签允许在jsp页面直接访问action。如果将action标签的executeResult属性设置为true,那么action对应的输出结果也会包含在本页面中。
7、include标签:
该标签类似于jsp中<jsp:include></jsp:include>
标签。在标签的内部可以包含多个param标签,用于向被包含的页面传递参数。include标签只有一个value属性,用于指定被包含的jsp或者Servlet。
获取值:
结果:
8、url标签:
控制标签:用于在呈现页面的时候控制程序的执行流程。常用的控制标签包括:
if/elseif/else
iterator
generator
1、if/elseif/else 标签:
<body>
<s:set name="score" value="75"></s:set>
成绩等级:
<s:if test="#score < 60">不及格</s:if>
<s:elseif test="#score < 80">良好</s:elseif>
<s:else>优秀</s:else>
</body>
2、iterator标签:
iterator标签用于迭代一个集合的元素,在迭代的过程中,会暂时把迭代的对象压入栈顶,这样在标签的内部可以访问对象的属性值了。访问结束之后,会把栈顶的迭代对象移除,并把下一次迭代的对象压入栈顶。这样一直到所有的对象迭代完毕。iterator标签有三个属性:id、value和status。id属性几乎不使用,value属性用于指定迭代的集合,status属性可以获取迭代中的一个状态信息(比如索引值、是否是奇数、偶数等),其所有的方法如下:
- public int getCount():得到迭代元素的总数
- public int getIndex():得到当前迭代元素的索引
- public boolean isEven():判断当前迭代的元素的顺序是否是偶数
- public boolean isOdd():判断当前迭代的元素的顺序是否是奇数
- public boolean isFirst():判断当前迭代的元素是否是第一个元素
- public boolean isLast():判断当前迭代的元素是否是最后一个元素
<body>
<s:iterator value="{'刘备','张飞','关羽'}" status="s">
<p>当前元素:<s:property /></p>
<p>当前元素总数:<s:property value="#s.count"/></p>
<p>当前元素索引:<s:property value="#s.index"/></p>
<p>当前元素是否为偶数:<s:property value="#s.even"/></p>
<p>当前元素是否是奇数:<s:property value="#s.odd"/></p>
<p>当前元素是否是第一个数:<s:property value="#s.first"/></p>
<p>当前元素是否是最后一个数:<s:property value="#s.last"/></p>
<hr>
</s:iterator>
</body>
3、generator标签:
generator标签主要是根据分隔符对元素进行处理,该标签一般和iterator标签同时使用,在generator标签的内部可以使用iterator标签对处理之后的元素进行迭代,下面是一个例子:
<body>
<s:generator separator="," val="'刘备,张飞,关羽'">
<s:iterator>
<s:property/>
</s:iterator>
</s:generator>
</body>
generator标签中上述的separator属性和val属性是必需的,如果指定了id属性,那么将以id属性的值作为key,将生成的迭代器保存在pageContext对象中。
Struts2中#,$,%符号的使用(重要)
#
a、取contextMap中key时使用,例如<s:property value="#name" />
b、OGNL中创建Map对象时使用,例如:<s:radio list="#{'male':'男','female':'女'}" />
$
a、在JSP中使用EL表达式时使用,例如${name}
b、在xml配置文件中,编写OGNL表达式时使用,例如文件下载时,文件名编码。
struts.xml——>${@java.net.URLEncoder.encode(filename)}
%
在struts2中,有些标签的value属性取值就是一个OGNL表达式,例如<s:property value="OGNL Expression" />
还有一部分标签,value属性的取值就是普通字 符串,例如<s:textfield value="username"/>,如果想把一个普通的字符串强制看成时OGNL,就需要使用%{}把字符串套起来。
例如<s:textfield value="%{username}"/>。当然在<s:property value="%{OGNL Expression}" />也可以使用,但不会这么用。
struts2通用标签的更多相关文章
- struts2 通用标签
*property 标签 property 标签用来输出一个值栈属性的值, 对于对象栈,打印值栈中对应的属性值:对于Map 栈,打印request,session,application的某个属性值或 ...
- struts2框架学习之第三天
day03 上传下载 1 上传下载组件介绍 l jspSmartUpload(model1的年代): l apache-commons-fileupload,Struts2默认上传组 ...
- Strut2开发经验总结
1.如何在html静态页面中使用struts tomcat目录/conf/web.xml 文件中,找到 <servlet-mapping> <servlet-name>jsp& ...
- [原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- struts2 OGNL配和通用标签和其它标签的使用
三.OGNL配合通用标签的其他使用 1.iterator标签(很重要) 动作类 package com.itheima.web.action; import java.util.ArrayList; ...
- struts2笔记
Struts2 中, HTML 表单将被直接映射到一个 POJO,通过params拦截器,类中定义对应属性,及对应set方法即可. Struts2 中,任何一个POJO都可以是一个action类. S ...
- struts2案例
Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点.Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开发的程序提供很好的兼容性.下 ...
- struts2标签
一.通用标签 1.property Name Required Default Evaluated Type Description default false false String ...
- struts2基础——标签
一.通用标签 1.s:property (读取值栈中对象的属性值) 属性:value:指定OGNL表达式:default:OGNL表达式返回为 null 时,使用默认值:escape:是否对 HTML ...
随机推荐
- java集合系列之LinkedList源码分析
java集合系列之LinkedList源码分析 LinkedList数据结构简介 LinkedList底层是通过双端双向链表实现的,其基本数据结构如下,每一个节点类为Node对象,每个Node节点包含 ...
- windows 下QT5.5+vs2013开发环境搭建
开发环境搭建: 1.下载QT,下载的网址如下: http://download.qt.io/official_releases/vsaddin/ http://download.qt.io/offic ...
- js监听鼠标点击操作
element.addEventListener('click', function() { /* do stuff here*/ }, false);
- 彻底理解javascript 中的事件对象的pageY, clientY, screenY的区别和联系。
说到底, pageY, clientY, screenY的计算,就是要找到参考点, 它们的值就是: 鼠标点击的点----------- 和参考点指点----------的直角坐标系的距离 stacko ...
- Python学习系列之logging模块
实例一:日志写进一个文件 代码: import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filen ...
- Codeforces 424 C. Magic Formulas
xor是满足交换律的,展开后发现仅仅要能高速求出 [1mod1....1modn],....,[nmod1...nmodn]的矩阵的xor即可了....然后找个规律 C. Magic Formulas ...
- HDU2897( 巴什博奕变形)
邂逅明下 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- iphone 消息推送 实现
IPhone 消息推送实现 参考 资料 http://blog.csdn.net/victormokai/article/details/39501277 对生成pem 的补充 拿到mac 上生成导出 ...
- java开始到熟悉100-102
本次内容:arraylist() 1. package list; import java.util.ArrayList; import java.util.Date; import java.uti ...
- <bgsound> - 背景音乐
摘要 项目 说明 形式 <bgsound src="..."> 支持 e2+ 标签省略 开始标签:必须,结束标签:无 ■ 说明 bgsound 是 background ...