Struts2标签库整理【完整】
转自:https://blog.csdn.net/chen_zw/article/details/8161230
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。
头声明:<%@ taglib uri ="/struts-tags" prefix ="s" %>
struts2的标签可以分为五大类:
一、逻辑控制标签
(1)条件标签
条件标签主要有<s:if><s:elseif><s:esle>3个子标签,用于执行基本的条件流转
- <s:if test="#request.username=='admin'">
- 您是admin!
- </s:if>
- <s:elseif test="#request.username=='manager'">
- 您是manager!
- </s:elseif>
- <s:else>
- 您没有身份!
- </s:else>
test:条件判定语句,值为boolean类型。
(2)迭代标签
<s:iterator>标签用于遍历集合(java.util.Collection)或者枚举值(java.util.Iterator)类型的对象。
1、遍历普通List、数组
- //后台存放数据到list中
- List<String > list = newArrayList<String>();
- list.add("aaa");list.add("bbb"); list.add("ccc");
- <!-- 用iterator标签遍历list -- >
- <s:iterator value="list"var="v">
- <s:property value="v"/><br>
- </s:iterator>
- 或者:
- <s:iteratorvalue="list">
- <s:property/><br>
- </s:iterator>
- <s:iterator value="users" id="us">
- <!--可以这样: <s:property value="#us.name"/> -->
- <s:property value="name"/>
- <s:property value="email"/><br/>
- </s:iterator>
3、 status属性的应用
- <s:iterator value="users" id="us" status="u">
- 序列号: <s:property value="#u.index"/>
- 姓名: <s:property value="name"/>
- 邮件: <s:property value="email"/>
- 是否第一条: <s:property value="#u.first"/>
- 是否最后一条:<s:property value="#u.last"/>
- 是否偶数行: <s:property value="#u.even"/>
- 是否奇数行: <s:property value="#u.odd"/>
- 当前行数: <s:property value="#u.count"/>
- </s:iterator>
id:指定集合中元素在值栈中的名称。
value:指定迭代的迭代体。
var:指向值栈中的值。
status:该属性在迭代时会产生一个IteratorStatus对象,该对象可以判断当前元素的位置。
二、数据输出标签
(1)action标签
<s:action>标签用于在jsp页面中直接调用Action
- <s:action name="loginAction" namespace="/user" ignoreContextParam="false" executeResult="true" >
- <s:param name="userName" value="'张三'"></s:param>
- </s:action>
name:struts.xml中指定Action的名称
executeResult:指定是否将Action的处理结果包含到本页面中.默认值为false(即不包含)
ignoreContextParam:指定该页面的请求参数是否需要传入调用的Action中,默认值是false(即传入参数)
注意:<s:param>是以request方式的值的,而不是以参数传值,所以request.getParameter("")会获取不到值,通过request.getAttribute("")方式可以获取到。
(2)date标签
<s:date>标签用以格式化日期并显示
- <s:date name="user.birth" format="yyyy-MM-dd HH:ss:mm"nice="false"/>
name:表示要输出的日期对象。
format:输出的日期格式。
nice:指定是否输出指定日期与当前时刻之间的时差。若nice="true",则format属性失效,只输出当前时刻与指定日期间的间隔;若nice=“false”,则是输出指定日期。
(3)bean标签
bean标签用于创建javaBean实例,需要java类提供相应的getter、setter方法
- <s:bean name="pojo.User" id = "user">
- <s:param name="name" value=" '张三' "></s:param>
- <s:param name="email" value=" '48964565@qq.com' "></s:param>
- <s:param name="age" value="20"/>
- <s:param name="birth" value="'2010-4-1'"/>
- </s:bean>
- <s:property value="#user.name"/>
- <s:property value="#user.email"/>
- <s:property value="#user.age"/>
- <s:date name="#user.birth" format="yyyy-MM-dd" nice="false"/>
name: 必填,指定要实例化的JavaBean的实现类
id:
可选。如指定了该属性,则该Javabean实例会被放入StackContext中(不是ValueStack),从而允许直接通过该id属性来访问该JavaBean实例。如果未指定,则该Javabean实例会被放入ValueStack中,该标签结束,生成的子集被移出valuestack栈。
注意:java类String类型的属性赋值时,必须再加个单引号' '。
(4)parma标签
param标签用于为其他标签添加参数,用法如下:
- <!-- 第一种用法 -->
- <s:param name="参数名" value="参数值"/>
- <!-- 第二种用法 -->
- <s:param name="参数名">参数值</s:param>
注意:字符串赋值时要加单引号。详见bean标签用法。
(5)property标签
property标签用于输出一个属性值。
- <s:property value="user.name" escape="false" default="默认值" />
value:指定属性的名称,默认值是栈顶元素。
escape:指定输出的内容是否要经过HTML转义,默认值是true。escape="false"表示会将类似"<h2>aaa</h2>"的字符串转义成html显示。
default:指定默认值。
(6)<s:url>标签和<s:a>标签
<s:url>标签通常与<s:a>标签一起使用,<s:url>标签主要用于赋值給href属性,用于指定链接的地址和传递的参数。
- <!-- 指定链接的action 及 传递的参数 -->
- <s:url action="getUserList" namespace="test2" id="getUserListUrl" method="execute">
- <s:param name="id" value="1"></s:param>
- <s:param name="page" value="1"></s:param>
- </s:url>
- <!-- 链接地址引用了<s:url>的值 -->
- <s:a href="%{getUserListUrl}" >获取用户列表</s:a>
其结果等同于<a href="/test2/getUserList ! execute ?id = 1 & page = 1"></a>
(7)<s:debug>标签
<s:debug>标签用于在页面上生成一个连接,当点击链接时,可以看到ValueStack 和 Stack Context中的内容
三、HTML表单标签
(1)表单标签
- <s:form action=" " method="post" enctype="multipart/form-data" namespace="/test1">
- <s:textfield label="姓名" name="username" tooltip="Enter your Name here" />
- <s:password label="密码" name="password" />
- <s:textarea label="备注" name="remark" cols="20" rows="3" tooltip="Enter your remark"/>
- <s:hidden name="topic.ic" value="<s:property value='topic.id'/>"></s:hidden> //注意<s:property>标签的value值是单引号。
- <s:submit value="提交"/>
- <s:reset value="重置" />
- lt;/s:form>
enctype:共有3个值:
1)application/x-www-form-urlencoded:默认值,使用范围广,但向服务器发送大量文本、包含非ASCII字符的文本或二进制数据时该编码效率很低。
2)multipart/form-data:上传二进制数据,使用该值即可完整的传递文本文件数据。
3)text/plain:主要使用于发送电子邮件的应用。
namespace:设置action的包命名空间。
注意:当该标签设置了namespace属性后,action属性设置不能加.action后缀。
(2)<s:select>标签
- <!-- 数据前台设置 -->
- <s:select label="性别" name="gender" list="#{1:'男',2:'女'}" listKey="key" listValue="value" value="#{2:'女'}" emptyOption="true" headerKey="-1" headerValue="--请选择性别--" tooltip="Choose your gender" />
- <!-- 数据后台获取 -->
- List<User> user; //后台添加数据到list中
- <s:select label="用户" name="gender" list="user" listKey="userId" listValue="name" emptyOption="true" headerKey="-1" headerValue="--请选择用户--" tooltip="Choose your gender" />
list属性(必设):必须是一个可以迭代的源,如为一个List, Map, Set等
1)如果集合为javabean:<s:select theme="simple" name="sex" list="#request.sexs" listKey="id" listValue="name"></s:select>
2)如果集合为list:<s:select theme="simple" name="sexList" list="{'男','女'}"></s:select>
3)如果集合为map:<s:select theme="simple" name="sexMap" list="#{1:'男',2:'女'}" listKey="key" listValue="value"></s:select>
listKey:设置后台传送的数据项。
listValue:设置前台显示的数据项。
emptyOption:设置是否有空选项。
value:设置默认显示数据列表list中的选项。
headerValue:设置下拉框头条显示数据。
headerKey:设置下拉框头条后台传回的数据。
(3)<s:combobox>标签
- <s:combobox theme="simple" label="选择你喜欢的颜色" name="colorNames" headerValue="------请选择------" headerKey="1" list="{'红','橙','黄','绿','青','蓝','紫'}" />
属性说明详见<s:select>标签。
(4)<s:checkboxlist>标签
- <s:checkboxlist name="hobby" label="兴趣" list="#{1:'football', 2:'music',3:'basketball', 4:'computer'}" listKey="key" listValue="value" tooltip="Choose your hobby"/>
属性说明详见<s:select>标签。
(5)<s:checkbox>标签
- <s:checkbox name="age" label="年龄" value="18" fieldValue="yes" tooltip="Confirmed that your are Over 18"/>
fieldVaule:设置选中时向后台传送的数据(默认不设时返回的是布尔类型)。
value:设置前台显示的数据。
(6)<s:radio>标签
- <s:radio list="#{1:'男',2:'女'}" name="gender" label="性别" required="true" value="1"></s:radio>
value:默认选中的选项的key值。
(7)<s:file>标签
- <s:file label="上传" theme="simple" name="uploadfile"/>
(8)<s:hidden>标签
- <s:hidden name="uid"/>
四、HTML非表单标签
(1)<s:actionerror>标签
actionerror标签用于输出存储在ActionError中的值。
<s:actionerror/>
Action类中添加actionerror信息:addActionError("出错了!");
(2)<s:actionmessage>标签
actionmessage标签用于输出存储在ActionMessage中的值。
<s:actionmessage/>
Action类中添加actionmessage信息:addActionMessage("出错了!");
(3)<s:fielderror>标签
fielderror标签用于输出FieldError中的值。默认错误信息显示在所对应field标签的上方。
<s:textfield name="user.name" label="姓名" />
Action类中添加fielderror信息:addFieldError("user.name", "用户名不能为空!");
注意:(1)
actionerror与actionmessage功能差不多,不过在<head></head>中加上<s:head/>标签后,actionerror和fielderror的错误信息有CSS效果(变红),而actionmessage无效果。
(2) 在添加错误信息前最好先clearErrorsAndMessages();来清空之前加载的错误信息。
五、AJAX标签
<%@taglib prefix="sx" uri="/struts-dojo-tags" %>
记得在<head></head>中加上<sx:head/>标签,<sx:head/>标签 用来下载Dojo文件和相应的Javascript代码
(1)<sx:div>标签
<sx:div>标签可以异步定时加载刷新数据。
- <!-- 用于显示异步加载的数据 -->
- <div id="msg">
- <s:property value="message"/>
- </div>
- <!-- 定时5s加载test2.action中的message属性值,并刷新id=“msg”的div标签-->
- <sx:div updateFreq="5000" href="test2/test2.action" delay="100" errorText="出错了!" loadingText="正在请求..." showLoadingText="true" indicator="msg">
- </sx:div>
href:异步请求的资源地址。
updateFreq:自动更新div内容的间隔,以毫秒为单位。
autoStart:页面加载后是否启动定时器,默认为true。
delay:第一个异步请求开始之前等待的时间,以毫秒为单位。
loadText:当请求正在处理时显示的文本。
showLoadingText:是否显示loadText值,默认为false。
errorText:当请求失败时显示的文本。
indicator:当请求正在处理时具有这个id的元素将被显示。
executeScript:执行服务器返回内容中的javascript代码,默认为false。
formId:指定表单id,表单字段将被序列化并作为参数传递。
(2)<sx:a>标签
- <!-- 单击"用户信息列表信息" 链接后会加载userList.jsp表到userListDiv标签上,其中getUserList.action是跳转到userList.jsp页面的 -->
- <sx:a href="test2/getUserList.action" targets="userListDiv" loadingText="加载中..." showLoadingText="true" errorText="加载失败!">用户信息列表</sx:a>
- <div id="userListDiv"></div>
- <!-- userList.jsp -->
- <body>
- <table border="1" cellpadding="0" cellspacing="0">
- <thead>
- <tr>
- <th colspan="4">用户信息列表</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <th>序列号</th>
- <th>用户名</th>
- </tr>
- <s:iterator value="users" id="us" status="u">
- <tr>
- <td><s:property value="#u.index"/></td>
- <td><s:property value="name"/></td>
- </tr>
- </s:iterator>
- </tbody>
- </table>
- </body>
href:异步请求的资源地址。
targets:被更新的元素列表。
loadText:当请求正在处理时显示的文本。
showLoadingText:是否显示loadText值,默认为false。
errorText:当请求失败时显示的文本。
indicator:当请求正在处理时具有这个id的元素将被显示。
executeScript:执行服务器返回内容中的javascript代码,默认为false。
formId:指定表单id,表单字段将被序列化并作为参数传递。
(3)<sx:submit>标签
<sx:submit>标签的使用和<sx:a>标签的使用一样,这里就不举例了。
(4)<sx:datetimepicker>标签
- <sx:datetimepicker name="book.publicationDate" value="today" label="出版日期" displayFormat="yyyy-MM-dd" ></sx:datetimepicker>
(5)<sx:textarea>标签
- <sx:textarea name="user.remark" label="备注" rows="20" cols="50"></sx:textarea>
提示:<sx:textarea>标签提交的文本是带Html标签的。
(6)<sx:tree>标签
- <sx:tree label="城市" id="city" showRootGrid="false" showGrid="false" treeSelectedTopic="treeSelected">
- <sx:treenode label="北京" id="bj">
- <sx:treenode label="朝阳" id="cy"></sx:treenode>
- <sx:treenode label="中关村" id="zgc"></sx:treenode>
- </sx:treenode>
- <sx:treenode label="天津" id="tj">
- <sx:treenode label="白洋淀" id="byd"></sx:treenode>
- </sx:treenode>
- </sx:tree>
- <script language="JavaScript" type="text/javascript">
- dojo.event.topic.subscribe("treeSelected", function treeNodeSelected(node) {
- alert(node.node.widgetId + node.node.title);
- });
- </script>
showRootGrid:是否显示根节点,默认为true。
showGrid:是否显示结点间的连接线,默认为true。
treeSelectedTopic:选中时的时间。
(7)<sx:tabbedpanel>标签
- <sx:tabbedpanel id="tab1" cssStyle="width:300px;" labelposition="top" selectedTab="tab2">
- <sx:div id="tab1" label="Tab 1" cssStyle="height:100px;" href="index.jsp" closable="true" preload="false" >
- Local Tab 1
- </sx:div>
- <sx:div id="tab2" label="Tab 2" cssStyle="height:100px;" href ="index.jsp" refreshOnShow="true">
- Local Tab 2
- </sx:div>
- <sx:div id="tab3" label="Tab 3" disabled="true">
- Local Tab 3
- </sx:div>
- </sx:tabbedpanel>
closable:设置该tab标签是否可关闭。
href:加载资源。若为jsp页面,则加载该页面到该tab中。
preload:设置是否预先加载,默认为true。
cssStyle:用于设置tab选项卡大小。
refreshOnShow:设置是否每次单击选项卡重新加载内容,默认为false。
disabled:设置选项卡是否失效,默认为false。
labelposition:设置选项卡标头的显示位置,可以是top, right, bottom, left。
selectedTab:设置默认选中的选项卡。
Struts2标签库整理【完整】的更多相关文章
- struts2标签库----控制标签详解
前面几篇文章我们介绍了有关struts2的基本内容,简单理解了整个框架的运作流程.从本篇开始我们逐渐了解和使用struts2为我们提供的标签库技术,使用这些标签可以大大降低我们表现层的开发难 ...
- struts2标签库----数据标签详解
上篇文章我们介绍struts2标签库中的控制标签的基本使用和部分原理,本篇文章接着了解下标签库中有关数据标签的使用和原理.主要涉及以下数据标签: action标签:用于在视图页面跳转到一个Action ...
- java开发--struts2 标签库使用
在工程中使用struts2标签 一.struts2标签定义文件在struts2-core-2.0.11.1\META-INF 下面,文件名为struts-tags.tld 二.如果工程使用了servl ...
- 基于Struts2框架实现登录案例 之 使用Struts2标签库简化表单+继承ActionSupport完成输入交验
一,使用Struts2标签库简化表单 在文章[基于Struts2框架实现登录案例]的基础上,通过使用Struts标签库可以简化登录页面login2.jsp <%@ page language=& ...
- Struts2 标签库详解2
Struts2标签库 包括: OGNL Struts2标签分类 控制标签 :(if, elseif,else, iterator, append, merge, generator, subset, ...
- struts2标签库使用小结
之前的demo中用了一些struts2标签,用的是struts2.2.1.1. Struts2的标签常常和OGNL(图对象导航语言)一起使用.有几点总结如下: [引用请注明出处:http://blog ...
- Struts2 标签库详解
Struts2标签库 包括: OGNL Struts2标签分类 控制标签 :(if, elseif,else, iterator, append, merge, generator, subset, ...
- JSP使用Struts2标签库报错
JSP中使用<%@ taglib prefix="s" uri="/struts-tags" %>报错:Cannot find the tag li ...
- struts2 标签库使用
[引用]json 使用 [引用]struts2 标签库使用 2011-05-11 16:13:00| 分类: 默认分类 | 标签: |举报 |字号大中小 订阅 本文转载自kangzye<st ...
随机推荐
- 深入理解Dalvik虚拟机- 解释器的执行机制
Dalvik的指令运行是解释器+JIT的方式,解释器就是虚拟机来对Javac编译出来的字节码,做译码.运行,而不是转化成CPU的指令集.由CPU来做译码,运行.可想而知.解释器的效率是相对较低的,所以 ...
- bzoj-1492 货币兑换Cash (1)——平衡树维护凸包
题意: 有n天和m的初始金钱,用来购买AB两种纪念券: n天里每天都有AB的价格.每天能够进行这种操作. 1.卖出手中x%的纪念券(AB分别都卖出x%). 2.用x的金钱买入纪念券.买入AB券的比例在 ...
- sap abap 对字符串的操作
替换字段内容 REPLACE [FIRST /ALL OCCURRENCES OF]<STR1>INTO <STR> WITH <STR2> DATA STR ...
- STM32系列ARM单片机介绍
STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Cortex-M3内核.按性能分成两个不同的系列:STM32F103"增强型"系列和STM32F101 ...
- [Swift]数组(Array)最强解析
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Ubuntu新建用户并加入SUDO组
Ubuntu新建用户并加入SUDO组 新建用户: adduser xxxx 加入用户组: usermod -aG sudo username
- maven关于pom文件配置详解(转载)
转载:http://www.cnblogs.com/hafiz <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...
- 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...
- HDU 1587 Flowers【贪心】
题意:给出n种花的价钱,和总的金额m,问最多能够买到多少朵花.先排序,然后就是便宜的花在能够买的范围内能够多买就多买 #include<iostream> #include<cstd ...
- 重设数据文件大小sql语句
set verify off column file_name format a50 word_wrapped column smallest format 999,990 heading " ...