Struts标签基本知识
1.普通标签:控制执行的流程
1.1 控制标签:实现分支、循环等流程控制
if
elseif
else
append
generator
iterator
merge
sort
subset
1.2 数据标签:输出后台的数据和完成其他数据访问功能
a
action
bean
date
debug
i18n
include
param
property
push
set
text
url
2.UI标签:以丰富而可复用的HTML文件来显示数据
2.1 表单标签:用来生成HTML页面中的表单元素
checkbox
checkboxlist
combobox
doubleselect
head
file
form
hidden
inputtransferselect
label
optiontransferselect
optgroup
password
radio
reset
select
submit
textarea
textfield
token
updownselect
2.2 非表单标签:用来生成HTML的<div>标签及输出Action中封装的信息
actionerror
actionmessage
component
div
fielderror
2.3 Ajax标签
a
autocompleter
bind
datetimepicker
div
head
submit
tabbedPanel
textarea
tree
treenode
3.标签的使用
导入Struts2-core-xxx.jar包
在JSP文件中添加 <%@ taglib prefix="s" uri="/struts-tags" %>
- 1.访问HTTP请求参数:#parameters[‘id’]或#parameters.id
- 2.访问HTTP请求属性:#request[‘user]或#request.user
- 3.访问session属性:#session[‘user’]或#session.user
- 4.访问application属性:#application[‘user’]或#application.user
5.创建List集合,value值为默认
<s:select label="Country" name="country" list="{'America','China','Russia'}" value="%{'China'}" />
6.创建一个Map集合
<s:select label="Sex" name="sex" list="#{'0':'female','1':'male'}" />
7.if标签:标签体
<s:if test="'A' in {'A','B'}"> In </s:if> <s:if test="'foo' not in {'foo','bar'}" > Not in </s:if> <s:else> In </s:else>
8.iterator标签
//begin:迭代数组或集合的起始位置 //end:迭代数组或集合的结束位置 //status:迭代过程中的状态,该属性可以获取迭代过程中的状态信息(元素个数,当前索引值,索引值奇偶性等) //step:指定每一次迭代后索引值增加的值 //value:迭代数组或者集合对象 //var:将生成的Iterator设置为page范围的属性 //id:不推荐使用 <s:iterator var="name" value="{'HTML','JAVA','CSS'}" status="st"> <!-- 如果是奇数 --> <s:if test="#st.odd"> <tr style="background-color:red;"> <td><s:property value="name" /></td> </tr> </s:if> </s:iterator> // ?:获得所有符合逻辑的元素 //^:获得符合逻辑的第一个元素 //$:获得符合逻辑的最后一个元素 <s:iterator value="people.{?#this.age > 20}" var="p"> <s:property value="p.name" /> </s:iterator>
9.append标签
<s:append var="newList"> <s:param value="{'HTML入门','Java基础','css入门'}"></s:param> <s:param value="{'Struts教程','JavaWeb实战'}"></s:param> </s:append>
10.generator标签:用来将指定字符串按指定分隔符分割成多个子串
//converter:指定转换器 //count:指定生成集合中元素个数 //separator:指定字符串的分隔符 //val:指定被解析的字符串 //var:将生成的Iterator设置为pageContext范围的属性 <s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="3" separator=","></s:generator>
- 11.merge标签:用来将多个集合拼接成同一个集合
12.sort标签:用于对指定的集合元素进行排序,在进行排序时,必须提供自己的排序规则,即自定义Comparator
//Comparator:指定进行排序实例 //id:不推荐使用,var可替代 //source:指定排序集合,如不指定为ValueStack栈顶集合 //var:将生成的Iterator设置为page范围的属性 <s:sort comparator="#mycomparator" source="{'ccc','adds','bbbb'}"></s:sort>
13.subset标签:取出指定集合的子集
//count:指定子集中元素的个数 //decider:指定一个decider对象,该对象决定是否选择该元素 //id:不推荐 //source:指定源集合 //start:指定从第几个元素截取 //var:将生成的Iterator设置为pageContext范围的属性 <s:subset source="{'a','b','c','d'}" start="1" count="2"></s:subset>
14.a标签:用于构造HTML页面中的超链接
//action:指定超链接Action地址 //href:超链接地址 //namespace:指定Action地址 //id:指定其id //method:指定Action调用方法
15.action标签:用来在JSP页面中调用Action
//executeResult:指定是否将处理结果页面显示在本页面,默认为false //var:将指定Action放入ValueStack中 //name:指定调用的Action //flush:输出结果是否刷新,默认为true //ignoreContextParams:指定该页面中的参数是否传入指定Action,默认为false //namespace:指定调用Action的命名空间 <s:action name="user" executeResult="true" namespace="/" />
16.bean标签
<s:bean name="com.model.User" var="usr"> <s:param name="name" value="'tom'"> <s:param name="age" value="20"> <s:if test="#usr.age > 10"> <s:property value="#usr.name" /> </s:if> </s:bean>
17.date标签:输出指定格式的日期
//name:指定日期值 //var:指定将日期放入ValueStack中 //nice:指定是否输出指定日期和当前日期之间的时差 //format:指定输出格式 <s:date name="person.birthday" format="dd/MM/yyyy" />
- 18.debug标签:主要用于开发者在开发过程中调试程序时输出更多的调试信息
19.i18n标签:用来进行资源绑定,然后将其放入ValueStack
//name:指定资源文件
- 20.include标签:将一个JSP页面包含到该页面中
- 21.param标签:用于为其他标签提供参数
22.property标签:用于输出ValueStack中对象的属性值,可以使用其value属性来指定要输出的对象属性
//value:指定要输出的值 //default:指定默认输出值,如果输出值为null,则输出default属性值 <s:property value="username" default="普通用户" />
23.push标签:将一个值放到ValueStack的栈顶
<s:push value="user"> <s:property value="firstName" /> </s:push>
24.set标签:用于将某个值放入指定范围内
//value:指定将赋给变量的值,如果没有则将ValueStack栈顶的值赋给变量 //var:指定变量名,该变量将会放入ValueStack,也可使用name或id //scope:指定变量放入范围(application,request,session,page,action),默认为action范围 <s:set var="personName" value="person.name" /> <s:property value="#personName" />
25.text标签:主要用来输出国际化资源文件信息
//name:要获取的资源属性 //searchValueStack:假如无法获取资源属性,是否要到stack中搜索其属性 //var:命名得到的资源属性,然后放入ValueStack中
26.url标签:用来生成URL映射地址
//action:指定生成的URL地址的Action,如果不提供该属性,则使用value值为URL的地址值 //anchor:指定URL的锚点 //encode:指定是否对参数进行编码,默认为true //escapeAmp:指定是否对&符号进行编码,默认为true //includeContext:指定将当前上下文包含在URL地址中 //includeParams:指定是否包含请求参数,其值只能为none、get或all,默认为get //method:指定Action调用方法 //namespace:指定Action命名空间 //value:指定生成URL地址,如果value属性不提供则使用action属性值为URL地址 //var:指定该链接变量,并将其放入ValueStack中 <!-- 生成映射地址url --> <s:url value="user.action" var="url" > <s:param name="id" value="10" /> </s:url> <!-- 访问url对应的地址 --> <s:a href="%{url}">user</s:a>
27.form标签
//action:指定提交时对应的Action //namespace:指定action命名空间
- 28.submit标签:产生提交按钮
29.checkbox标签:创建复选框
//name:指定该元素name //value:指定该元素value //label:生成一个label元素 //fieldValue:指定真实的value,会屏蔽value属性值
30.checkboxlist标签:用于一次性创建多个复选框
//name:指定表单元素名字 //list:要迭代的集合,使用集合中的元素来设置各个选项,如果list的属性为Map,则Map的key成为选项的value,Map的value会成为选项的内容 //listKey:指定集合对象中的哪个属性作为选项的value //listValue:指定集合对象中的哪个属性作为选项的内容 <s:checkboxlist name="characters" list="#{'a':'1','b':'2','c':'3'}" label="choose a character" labelposition="top" listKey="key" listValue="value" />
31.combobox标签:用于创建文本框和下拉列表框的组合
//name:指定表单元素名字 //list:指定集合,该集合中的元素对应生成的列表项 //headerKey:headerValue的键,默认为"-1" //headerValue:用作标题的选项的文本,因为它是一个标题,所以是只读的,不能选择 //label:生成一个label元素 <s:combobox label="My Favourite Fruit" name="fruit" list="{'apple','banana','grape','pear'}" headerKey="-1" headerValue="----please select-----" emptyOption="true" value="banana" />
32.doubleselect标签:创建两个相关联的列表框
//list:指定要迭代的集合,使用集合中的元素来设置各个选项 //listKey:指定集合对象中哪个属性作为选项的value,该选项只对第一个列表框起作用 //listValue:指定集合对象中的哪个属性作为选项的内容,该选项只对第一个列表框起作用 //doublelist:指定第二个列表框要迭代的集合 //doubleListKey:指定集合对象中的哪个属性作为选项的value,该选项只对第二个列表框起作用 //doubleListValue:指定集合对象中的哪个属性作为选项的内容,该选项只对第二个列表框起作用 //doubleName:指定第二个列表框的name属性 //multiple:是否多选,默认为false <s:doubleselect label="choose a city" name="province" list="{'四川省','山东省'}" doubleName="city" doubleList="top == '四川省' ? {'成都市','绵阳市'} : {'济南市','青岛市'}" />
- 33.head标签:用于生成HTML的HEAD部分
- 34.file标签:创建一个文件选择框
- 35.hidden标签:创建一个隐藏表单元素
-
inputtransferselect标签:用来获取输入转到列表框中,或从列表中移除,实际上该标签创建了多个表单元素的集合
//list:要迭代的集合,使用集合中的元素来设置各个选项 //listKey:指定集合对象中哪个属性作为选项的value //listValue:指定集合对象中哪个属性作为选项的内容 //multiple:指定是否多选,默认为false //upLabel:设置向上移动按钮上的文本 //downLabel:设置向下移动按钮上的文本 //allowMoveUp:设置是否使用向上移动按钮,默认为true //allowMoveDown:设置是否使用向下移动按钮,默认为true //addLabel:设置添加输入到右边列表框的按钮上的文本 <s:inputtransferselect label="Favourite fruits" name="fruits" list="{'apple','banana','pear'}" upLabel="up" downLabel="down" removeAllLabel="removeall" removeLabel="remove" addLabel="add" />
- 37.label标签:生成label标签
38.optiontransferselect标签:创建一个选项转移列表组件
//list:要迭代的集合,使用集合中的元素来设置各个选项 //listKey:指定集合对象中的哪个属性作为选项的value,该选项只能对第一个列表框起作用 //listValue:指定集合对象中的哪个属性作为选项的内容,该选项只对第一个列表框起作用 //multiple:是否多选,默认为false //doubleList:要迭代的集合,使用集合中的元素来设置各个选项 //doubleListKey:指定集合对象中的哪个属性作为选项的value,该选项只对第二个列表起作用 //doubleListValue:指定集合对象中的哪个属性作为选项的内容,该选项只对第二个列表框起作用 //doubleMultiple:是否多选,默认为false //doubleName:指定第二个列表框的name属性 <s:optiontransferselect label="Favourite Cartoons Characters" name="leftSides" leftTitle="Left Title" rightTitle="Right Title" list="{'Popeye','He-Man','Spideman'}" multiple="true" headerKey="headerKey" headerValue="---Please Select---" emptyOption="true" doubleList="{'Superman','Mickey Mouse','Donald Duck'}" doubleName="rightSides" doubleHeaderKey="doubleHeaderKey" doubleHeaderValue="---Please Select---" doubleEmptyOption="true" doubleMultiple="true" />
39.select标签:创建一个下拉列表框
//list:要迭代的集合 //listKey:指定集合对象中的哪个属性作为选项的value //listValue:指定集合对象中的哪个属性作为选项的内容 //headerKey:设置当用户选择了header选项时,提交的value,如果使用该属性,不能为该属性设置空值 //headerValue:显示在页面中header选项的内容 //multiple:指定是否多选,默认为false <s:select label="Months" name="months" headerKey="-1" headerValue="Select Month" list="#{'01':'Jan','02':'Feb'}" listKey="key" listValue="value" />
40.optgroup标签:生成一个下拉列表框的选项组
//list:要迭代的集合 //listKey:指定集合对象中的哪个属性作为选项的value //listValue:指定集合对象中的哪个属性作为选项内容 <s:select label="My Selection" name="mySelection" value="%{'POPEYE'}" list="%{#{'SUPERMAN':'Superman','SPIDERMAN':'spiderman'}}"> <s:optgroup label="Adult" list="%{#{'SOUTH_PARK':'South Park'}}" /> <s:optgroup label="Japanese" list="%{#{'POKEMON':'pokemon','DIGIMON':'digimon'}}" /> </s:select>
41.password标签:创建一个密码输入框
<s:password label="Password" name="password" maxlength="15" />
42.radio标签:创建多个单选框
<s:radio label="Gender" name="gender" list="#{'male':'男','female':'女'}" listKey="key" listValue="value" />
- 43.reset标签:创建一个重置按钮
- 44.textarea/textfield标签:创建文本框,textarea多行,textfield单行
45.token标签:用于防止表单重复提交
<s:form> <s:token /> </s:form>
46.updownselect标签:用来创建一个带有上下移动的按钮的列表框
//list:要迭代的集合 //listKey:指定集合对象中的哪个属性作为选项的value //listValue:指定集合对象中哪个属性作为选项的内容 //multiple:指定是否多选,默认为false //moveUpLabel:设置向上移动按钮上的文本 //moveDownLabel:设置向下移动按钮上的文本 //allowMoveUp:设置是否使用向上移动按钮,默认true //allowMoveDown:设置是否使用向下移动按钮,默认true //allowSelectAll:设置是否使用全部选择按钮,默认为true //selectAllLabel:设置全部选择按钮上的文本 <s:updownselect list="#{'england':'England','america':'America','germany':'Germany'}" name="country" headerKey="-1" headerValue="---choose a country---" emptyOption="true" moveUpLabel="up" moveDownLabel="down" selectAllLabel="all" />
- 47.actionerror标签:用于输出错误信息到客户端
- 48.actionmessage标签:用于输出提示信息到客户端
- 49.component标签:主要用来使用自定义标签、模板、主题
- 50.div标签:输出div标签
- 51.fielderror标签:输出Action中的fieldErrors属性保存的字段错误