Struts2标签总结

来源:互联网 发布:中国书画网络展览馆 编辑:程序博客网 时间:2024/06/03 14:43
Struts2标签

学习struts2,struts2标签至关重要,下面是我总结的struts2的标签用法,希望对大家有所帮助。


一、数据标签


1.<s:property>标签

property标签的作用是输出指定值。property标签输出value属性指定的值。如果没有指定的value属性,则默认输出值栈栈顶的值。
该标签属性如下:
default:该属性是可选的,如果需要输出的属性值为null,则显示default属性指定的值。
escape:该属性是可选的,指定是否escape HTML代码。
value:该属性是可选的,指定需要输出的属性值,如果没有指定该属性,则默认输出值栈栈顶的值。
id:该属性是可选的,指定该元素的标志。
用法如下:
<s:property value="username"/>
或者:<s:property value="#request.username"/>

2. <s:set>标签

该标签用于将某个值放入指定的范围内,有如下几个属性:
name:该属性是必选的,重新生成新变量的名字。
scope:该属性是可选的,指定新变量的存放范围,可选值为application、request、session、page和acton。默认值为action。
id:该属性是可选的,指定该元素的引用id。

property标签访问存储于session中的user对象的多个字段:
<s:property value="#session['user'].username"/>
<s:property value="#session['user'].age"/>
<s:property value="#session['user'].address"/>
使用set标签使得代码易于阅读:
<s:set name="user" value="#session[‘user'] " />
<s:property value="#user.username"/>
<s:property value="#user.age" />
<s:property value="#user.address" />

用法举例如下:
首先建立一个Person类


对jsp界面进行设置代码如下:


页面运行效果如下图所示:



3. <s:param>标签

param标签主要用于为其他标签提供参数,例如,可以为include标签提供参数。
该标签的属性如下:
name:该属性是可选的,指定需要设置参数的参数名。
value:该属性是可选的,指定需要设置参数的参数值。
id:该属性是可选的,指定引用该元素的id。
例如,要为name为fruit的参数赋值:
<s:param name= "fruit">apple</s:param>

或者:
<s:param name="fruit" value="apple" />
上述两种用法不完全等价。用法一的语义是将字符串“apple”赋值给参数username;用法二的语义是将对象apple的值赋值给参数username,如果对象apple不存在,则参数username将取空值。
如果想用方法二指定fruit参数的值为apple字符串,则应该这样写:
<s:param name="fruit" value="'apple'" />

再举一个例子:
<s:param name=”age” value=”60+3”></s:param>
该语句将参数age赋值为63。

4. <s:bean>标签

该标签用于创建一个JavaBean的实例。创建JavaBean实例时,可以在该标签体内使用param标签为该JavaBean传入属性。如果使用param标签为该JavaBean传入属性值,则应该为该JavaBean提供对应的set方法。如果需要访问该JavaBean的某个属性,则应该为该属性提供对应的get方法。
有如下几个属性:
name:该属性是必选的,用来指定要实例化的JavaBean的实现类。
id:该属性是可选的,如果指定了该属性,则该JavaBean实例会被放入Stack Context中,从而允许直接通过id属性来访问该JavaBean实例。

下面是一个简单的例子:
有一个Person类,该类中有name属性,并有其getter和setter方法:


编写jsp界面,代码如下:



页面运行效果如下图所示:


5. <s:action>标签

使用action标签可以允许在JSP页面中直接调用Action,在调用Action时,可以使用param标签向Action传递参数。该标签有以下几个属性:
name:该属性是必选的,指定该标签调用哪个Action。
namespace:该属性是可选的,指定该标签调用的Action所在的namespace。
executeResult:该属性是可选的,指定是否要将Action的处理结果页面包含到本页面。如果值为true,就是包含,false就是不包含,默认为false。
ignoreContextParam:该属性是可选的,指定该页面中的请求参数是否需要传入调用的Action。如果值为false,将本页面的请求参数传入被调用的Action。如为true,不将本页面的请求参数传入到被调用的Action。
var:为非必选项。String类型,允许用户根据该属性引用var。

6. <s:date>标签

date标签主要用于格式化输出一个日期。
该标签有如下属性:
format:该属性是可选的,如果指定了该属性,将根据该属性指定的格式来格式化日期。
nice:该属性是可选的,该属性的取值只能是true或false,用于指定是否输出指定日期和当前时刻之间的时差。默认为false,即不输出时差。
name:属性是必选的,指定要格式化的日期值。
id:属性是可选的,指定引用该元素的id值。
nice属性为true时,一般不指定format属性。因为nice为true时,会输出当前时刻与指定日期的时差,不会输出指定日期。当没有指定format,也没有指定nice="true"时,系统会采用默认格式输出。其用法为:
<s:date name="指定日期取值" format="日期格式"/>
<!-- 按指定日期格式输出 -->
<s:date name="指定日期取值" nice="true"/>
<!-- 输出时间差 -->
<s:date name="指定日期取值"/>
<!—默认格式输出-->

简单的例子如下:


界面运行效果如下图所示:


7. <s:include>标签

include标签用于将一个JSP页面或一个Servlet包含到本页面中。
该标签有如下属性:
value:该属性是必选的,指定需要被包含的JSP页面或Servlet。
id:该属性是可选的,指定该标签的id引用。
用法如下:
<s:include value="JSP或Servlet文件" id="自定义名称"/>

8.<s:debug>标签

Debug标签用于帮助程序员进行调试,该标签在页面上生成一个超级链接。点击这个链接,程序员可以查看ActionContext和值栈中所有能访问的值。该标签没有任何属性。

9.<s:push>标签

push标签用于将一个值压入ValueStack。当一个对象访问层次深的时候,可以用push标签来做访问的简化。和set标签不同,push标签把指定的对象放到ValueStack的栈顶,而set标签将值放到StackContext中。
push标签的一个特性是其起始标签把值压入栈中,结果标签将该值弹出。

简单的例子如下:


页面运行效果如下图所示:


10.<s:url>与<s:a>标签

url标签用于生成一个URL地址,可以利用param子标签,为URL提供附加参数。
该标签的常用属性如下:
action:为非必填项,指定生成的URL地址为哪个Action,如果action没有提供值,就使用value作为URL的地址值。
value:为非必填项,指定生成URL的地址值,如果value没有提供值,就使用action属性指定action作为URL地址。
namespace:为非必填项,该属性用于指定命名空间,可以与action结合使用,与value结合使用时没有意义。
includeParams:为非必填项,指定是否包含请求参数,默认值为get,可选值为none、get和all。
当value和action属性同时指定时,优先使用的是value属性的值。如果两个属性的值都没有指定,则将使用当前页面的URL作为地址值。
如果includeParams属性的值为get,在生成的URL中将包含GET请求提交的参数;如果值为all,则在生成的RUL中会包含GET请求和POST请求提交的参数;如果值为none,则在生成的URL中不会包含任何请求参数。
<s:a>标签用于创建HTMl中的标签<a>,它支持url标签的所有属性。除此之外,还支持用于指示超级链接地址的属性href和绝大多数与标签<a>有关的属性和事件。

简单的例子如下:


界面显示效果如下图所示:


二、控制标签


控制标签有以下几个:
if:用于控制选择输出的标签。
elseif:用于控制选择输出的标签,必须和if标签结合使用。
else:用户控制选择输出的标签,必须和if标签结合使用。
append:用于将多个集合拼接成一个新的集合。
generator:用于将一个字符串按指定的分隔符分隔成多个字符串,临时生成的多个子字符串可以使用iterator标签来迭代输出。
iterator:用于将集合迭代输出。
merge:用于将多个集合拼接成一个新的集合,但与append的拼接方式不同。
sort:用于对集合进行排序。
subset:用于截取集合的部分元素,形成新的子集合。

1. <s:if>/<s:elseif>/<s:else>标签

       这3个标签可以组合使用,但只有if标签可以单独使用,而elseif和else标签必须与if标签结合使用。if标签可以与多个elseif标签结合使用,但只能与一个else标签使用。
简单的例子如下:


页面显示效果如下图所示:

2. <s:iterator>标签

该标签主要用于对集合进行迭代,这里的集合包含List、Set,也可以对Map类型的对象进行迭代输出。
该标签的属性如下:
value:该属性是可选的,指定被迭代的集合,被迭代的集合通常都由OGNL表达式指定。如果没有指定该属性,则使用值栈栈顶的集合。
id:该属性是可选的,指定集合元素的id。
status:该属性是可选的,指定迭代时的IteratorStatus实例,通过该实例可判断当前迭代元素的属性。如果指定该属性,其实例包含如下几个方法:
int getCount():返回当前迭代了几个元素。
int getIndex():返回当前被迭代元素的索引。
boolean isEven:返回当前被迭代元素的索引元素是否是偶数。
boolean isOdd:返回当前被迭代元素的索引元素是否是奇数。
boolean isFirst:返回当前被迭代元素是否是第一个元素。
boolean isLast:返回当前被迭代元素是否是最后一个元素。
简单的例子如下:

通过添加Struts 2必须的Jar包,再建立上面JSP文件,修改web.xml后,就可以部署运行,运行结果如下图所示。

3.<s:append>标签

Append标签和merge标签都是用于将一个集合对象组合成一个新的集合对象,二者的区别在于合并后的集合中元素的顺序不同。
该标签的属性如下:
Var:为非必填项,String类型,用于引用组合后的集合对象,指定了该属性后,合并后的集合将放入StackContext。

简单的例子如下:


页面显示效果如下图所示:


4.<s:merge>标签

假设有2个集合,第一个集合包含3个元素,第二个集合包含2个元素,分别用append标签和merge标签方式进行拼接,它们产生新集合的方式有所区别。
下面分别列出:
用append方式拼接,新集合元素顺序为:
第1个集合中的第1个元素
第1个集合中的第2个元素
第1个集合中的第3个元素
第2个集合中的第1个元素
第2个集合中的第2个元素


用merge方式拼接,新集合元素顺序为:
第1个集合中的第1个元素
第2个集合中的第1个元素
第1个集合中的第2个元素
第2个集合中的第2个元素
第1个集合中的第3个元素

大部分的表单标签和HTML表单元素是一一对应的关系

该标签的属性如下:

Var:为非必填项,String类型,用于引用组合后的集合对象,指定了该属性后,合并后的集合将放入StackContext。

简单的例子如下:


界面运行效果如下图所示:


5.<s:generator>标签

generator标签用于将一个字符串拆分成若干个字符串构成的集合,可以利用iterator标签对拆分结果迭代输出。
该标签的属性如下:
val:为必选项,String类型,指出要拆分的字符串。
separator:为必选项,String类型,指出拆分时的分隔符。
Count:为非必选项,Integer类型,指出拆分后集合中只容纳前count个字符串。
Converter:为非必选项,Converter类型,用于设置自定义的converter类,该类必须实现接口org.apache.struts2.util.Iterator.generator.
Converter
Var:为非必选项,String类型,用于引用组合后的集合对象,制订了该属性后,合并后的集合将放入PageContext.


简单的例子如下:


6.<s:subset>标签

subset标签用于获取指定集合的子集合。
该标签的属性如下:
source:为非必选项,指定源集合,缺省时,取ValueStack的栈顶元素作为源集合。
start:为非必选项,指定从源集合的第几个元素开始截取,0代表第一个元素。
count:截取的元素的总数
decider:用于设置自定义的Decider类(实现org.apache.struts2.util.SubdetIteratorFilter.Decider接口)
var:为非必选项,用于引用截取后的集合对象,指定该属性后,截取后的集合将放入PageContext中。

简单的例子如下:


界面运行效果如下图所示:



7.<s:sort>标签

sort标签利用设置的比较器来对指定的集合进行排序。
该标签的属性如下
sourse:为非必填项,指定要排序的集合,缺省时,取v
valueStack的栈顶元素作为源集合。
comparator:为必选项,指定排序时使用的比较器
var:为非必填项,用于引用排序后的集合对象,指定该属性后,排序后的集合将放入PageContext中。

三、表单标签


表单标签主要用于进行数据的输入和用户交互等操作。

1.<s:form>标签

form标签用于生成HTML中的form表单。
标签的常用属性为:
action:设置提交的Action的名字
namespace:设置Action的命名空间
method:设置HTML表单的form属性(get|post),默认值为post。
entype:在上传文件时,需要将该属性设置为multipart/form-data
validate:在xhtml/ajax主题下是否执行客户端验证,默认值为false。
id:设置HTML表单的id属性。
在web.xml将核心控制器的url-pattern属性设置为“/*”时,可以省略action属性的扩展名(.action),否则不能省略。
例如:
<s:form action=”login.action”></s:form>

2.<s:textfield>、<s:password>和<s:hidden>标签

textfield标签用于输出一个HTML单行文本框,对应HTML的<input type=”text”>.
password标签用于输出一个HTML隐藏表单元素,对应HTML的<input type=“hidden”>.除公共属性外,hidden标签没有其他属性。
textfield和passwork标签的公共属性为:
maxlength:String类型,输入框所能容纳的最大文本长度。
readonly:Boolean类型,设置元素是否是只读。默认值为false。
size:String类型,设置显示的尺寸。
除此之外,password标签还有一个showPassword属性。当该属性的值被设置成true时,password标签将显示密码。

3.<s:textarea>标签

textarea标签用于输入一个HTML多行文本框,对应HTML的<textarea...>。
除公共属性外,textarea标签还具有以下属性:
cols:设置多行文本框的列数。
rows:设置多行文本框的行数。
readonly:设置多行文本框是否是只读。默认值为false。
size:设置多行文本框中的内容是否自动换行。
<s:textarea name=”content” cols=”80”rows=”20”>
</s:textarea>

4.<s:reset>标签

reset标签用于输出一个重置按钮。
除公共属性外,reset标签还具有如下属性:
type:String类型,用于设置重置按钮的类型(input|button)。默认值为input。
<s:reset value=”重置”></s:reset>
<s:reset type=”button” value=”重置”></s:reset>

5.<s:submit>标签

submit标签英语输出一个提交按钮。
除公共属性外还具有如下属性:
action:设置HTML的action属性
method:设置使用Action的哪个方法处理请求
type:设置提交按钮的类型(input|button|image)。默认值为input。
src:当type=“image”时,为提交按钮设置图片地址。

6. <s:combobox>标签

combobox标签生成一个单行文本框和下拉列表框的组合。两个表单元素只能对应一个请求参数,只有单行文本框里的值才包含请求参数,下拉列表框只是用于辅助输入,并没有name属性,故不会产生请求参数。
除了公共属性外,checkbox标签还具有如下属性:
fieldValue:指定在复选框中时,实际提交的值(true|false),默认值为true。
用法举例:
<s:combobox label="请选择你喜欢的水果" list="{'apple','oranger','pear','banana'}" name="fruit">
</s:combobox>

<s:checkbox name=”remember”label=”记住密码”></s:checkbox>
如果用户在表单上选中了该按钮,则Action类的remember属性将设置为true,否则为false。
<s:checkbox name=”remeber” fieldValue=“false”label=“请记住密码”/>
当fieldValue的值为false时,无论用户是否在表单上选中remember按钮,Action类的remember属性都会被设置为false。


7.<s:checkboxlist>标签

Checkboxlist标签用于输出一组HTML复选框,等价于一组<input type=”checkbox”...>。

简单的例子如下:


页面运行效果如下图所示:



8. <s:datetimepicker>标签

datetimepicker标签用于生成一个日期、时间下拉列表框。当用户单击该选择框时,浏览器将会弹出一个日期、时间选择窗口,供用户选择相应的内容。(使用datetimepicker标签可以避免用户输入错误的日期、时间、数值,同时根据不同用户的需要,可以显示不同地区的日期时间格式。)
该标签的属性如下:
displayFormat:为非必填项,指定日期的显示格式,例如使用“yyyy-MM-dd”格式。
displayWeeks:为非必填项,指定日期能显示的星期数。
language:指定日期显示的Locale,如果需要指定简体中文,则设置为“zh_CN”.
toggleType:为非必填项,指定日期选择框出现、隐藏的方式,可以选择plain、wipe、explode和fade这四种。
Type:为非必填项,指定日期选择框的类型,支持的值有date和time,分别代表日期选择框和时间选择框。
通过设置displayFormat属性值,来确定文本框中日期的显示格式:
日期、时间的格式符如下:
*dd:以两位数字显示日;当日期不足两位时,前面补0,例如“08”。
*d:以一位数字显示日;当日期超过一位时,原样显示。
*MM:以两位数字显示月;当月份不足两位时,前面补0,例如:“08”。
*M:以一位数字显示月;当月份超过一位时,原样显示。
*yyyy:以四位数字显示年;例如:“2015”年。
*yy:以两位数字显示年;只显示年份的后两位,例如“11”年。
*y:以一位数字显示年的最后一位数字,例如:“1”年。

简单的例子如下:

界面运行效果如下图所示:


9. <s:select>标签

select标签用于生成一个下拉列表框,通过为该元素指定list属性的值,来生成下拉列表框的选项。
该标签的属性如下:
list:String类型,用于生成列表框的集合对象(Collection、Map、Enumeration、Iterator或Array),必填。
listKey:String类型,用于集合对象的哪个属性生成列表框的value属性。
listValue:String类型,用于集合对象的哪个属性生成列表框的内容。
multiple:Boolean类型,是否表现为多选列表。默认值为false。
size:Integer类型,列表框中可显示的选项个数。当size>1时,表现为列表框。
简单的例子如下:

或者为:



页面运行效果如下图所示:


10.<s:optgroup>标签

optgroup标签通常作为select标签的子标签使用,用来生成选项组。optgroup标签也具有list、listKey和listValue属性。他们的含义和用法与select标签中同名属性的含义和用法完全一样。
在使用optgroup标签时,可以使用label属性为每个选项组指定一个组名。但要注意,这个组名用户是无法通过鼠标选择的。
简单的例子如下:

页面显示效果如下图所示:


11. <s:radio>标签

radio标签的用法与checkboxlist用法很相似,唯一的区别就是checkboxlist生成的是复选框,而radio生成的是单选框。
简单的例子如下:

或者为:

页面运行效果如下图所示:


12. <s:head>标签

head标签主要用于生成HTML页面的head部分。在介绍<s:datetimepicker>标签时说过,要在head中加入该标签,主要原因是<s:datetimepicker>标签中有一个日历小控件,其中包含了JavaScript代码,所以要在head部分加入该标签。
非表单标签主要用于在页面中生成一些非表单的可视化元素。这些标签不经常用到,下面大致介绍一下这些标签:
a:生成超链接。
actionerror:输出Action实例的getActionMessage()方法返回的消息。
component:生成一个自定义组件。
div:生成一个div片段。
fielderror:输出表单域的类型转换错误、校验错误提示。
tablePanel:生成HTML页面的Tab页。
tree:生成一个树形结构。
treenode:生成树形结构的节点。

13.<s:updownselect>标签

updownselect用于输出一个带有上、下移动按钮的列表框。Updownselect标签的实现类是从select标签的实现类上扩展而来的,因此它具有select标签的所欲属性,如:list,listKey等。
除了这些属性和公共属性外,updownselect标签还具有如下属性:
moveUpLabel:设置上移按钮显示的文本
moveDownLabel:设置下移按钮显示的文本
selectAllLabel:设置全选按钮显示的文本
allowMoveUp:是否显示向上移动按钮,默认为true。
allowMoveDown:是否显示向下移动按钮,默认值为true。
allowSelectAll:是否显示全部移动按钮,默认值为true。
简单的例子如下:

页面运行效果如下图所示:


14.<s:doubleselect>标签

doubleselect标签用于输出两个联动的HTML列表框。当选择第一个类表框内容时,第二个列表框的选项随着变化,更新成和第一个列表框选项相关的一组选项。
除了公共属性外,doubleselect标签还具有如下属性:
list:用于生成第一个列表框的集合对象(Collection、Map、Enumeration、Iterator或Array),必填。
listKey:用集合对象的哪个属性生成第一个列表框的value属性。
listValue:用集合对象的哪个属性生成第一个列表框的内容
headerKey:在第一个列表框所有的选项前加额外的一个选项作为其标题的value属性
headerValue:在第一个列表框所有的选项前加额外的一个选项作为其标题的显示文字。
emptyOption:在第一个列表框的标题后是否添加一个空行,默认值为false。
size:第一个列表框中可显示的选项个数。
multiple:是否表现为多选列表。默认值为false,对两个列表框均有效。
doubleList:用于生成第二个列表框的集合对象(Collection、Map、Enumeration、Iterator或Array),必填。
doubleListKey:用集合对象的哪个属性生成第二个列表框的value属性。
doubleListValue:用集合对象的哪个属性生成第二个列表框的内容。
doubleSize:第二个列表框中可显示的选项的个数。
doubleName:第二个下拉框的name属性,必填。
doubleValue:第二个下拉框的初始选中项。
简单的例子如下:
方法一:

页面运行效果如下图所示:



方法二:

页面运行效果如下图所示:






15.<s:optiontransferselect>标签

optiontransferslect标签用来生成两个左右放置的列表框,通过按钮可以控制选项在两个列表框之间移动。
optiontransferselect标签的实现类是从doubleselect标签的实现类上扩展而来的,因此该标签除具有所有的doubleselect标签的有关属性(multiple属性除外)的所有属性。除了公共属性外,该标签的其他属性如下:
Multiple:左边的列表框是否允许多选,默认值为false。
doubleMultiple:右边的列表框是否允许多选,默认值为false。
leftTitle:左边列表框的标题。
rightTitle:右边列表框的标题。
addToLeftLabel:向左移动按钮上显示的文本
addTRightLabel:向右移动按钮上显示的文本
addToAllLeftLabel:全部移动到左边按钮上显示的文本
addToAllRightLabel:全部移动到右边按钮上显示的文本
selectAllLabel:选择全部按钮上显示的文本。
leftUpLabel:左边下拉框上移按钮上显示的文本。
leftDownLabel:左边下拉框下移按钮显示的文本。
rightUpLabel:右边下拉框上移显示的文本。
rightDownLabel:右边下拉框下移按钮显示的文本。
allowAddToleft:是否出现向左移动按钮。默认值为true。
allowSelectAll:是否出现选择全部按钮,默认值为true。
allUpDownOnLeft:是否出现左边列表框的上下移动按钮,默认值为true。
allowUpDownOnRight:是否出现右边列表框的上下移动按钮,默认值为true。
简单的例子如下:

页面运行效果如图所示:



16.<s:actionerror>、<s:actionmessage>和<s:fielderror>标签


       3个标签都是用于输出消息的,不同的是actionerror标签输出的是Action的错误信息,actionmessage输出的是Action的一般性消息,而fielderror标签输出的是和action属性有关的错误。可以在Action类中或者校验器类中添加这些信息,然后在JSP页面中显示输出。

2 0
原创粉丝点击