您的位置:首页 > 编程语言 > Java开发

Struts2-04-标签

2016-02-04 22:36 681 查看
在struts2标签中取值的时候就是采用ognl表达式,其实struts2就是一个大的ognl上下文,Stack Context中的root就是值栈ValueStack(component stack)。所以在使用struts2标签的时候理解ognl表达式是相当重要的。
其次还有一点需要注意的是目前(早起不支持)在struts2中使用EL表达式也是可以的,原因就是struts2通过StrutsRequestWrapper类对request进行了封装,要是request.getAttribute(key)获取不到,那么就会从值栈中去获取。所以此时EL表达式的访问顺序为page->request->ValueStack.findValue->session->application。


转载:http://blog.sina.com.cn/s/blog_6db07bd601019m8p.html

一、控制标签:

1. if/elseif/else

<s:if test=''></s:if>
<s:elseif test=""></s:elseif>
<s:else></s:else>:条件判断
id:(可选的)
test:(必须的,boolean),决定是否显示if内的内容
test中可以用in/not in 判断


2 <s:property />:用于输出指定值
default:需要输出的属性值为null则显示该默认值(可选)
escape:指定是否格式化HTML代码(可选)
value:指定需要输出的属性值,如果没有指定则默认输出ValueStack栈顶的值(可选)
id:指定该元素的标识(可选)


3 <s:iterator />:用于对集合(List、Set、数组)进行迭代
value:指定被迭代的集合,若没有则使用值栈栈顶的集合(可选)
id:当前被迭代的元素
var:
status:指定迭代时的IteratorStatus的实例,其包含如下方法
int getCount():返回当前迭代了几个元素
int getIndex():返回当前迭代元素的索引
boolean isEven():返回当前被迭代元素的索引是否是偶数
boolean isOdd():返回当前被迭代的元素的索引是否是奇数
boolean isFirst():返回当前被迭代元素是否是第一个元素
boolean isLast():返回当前被迭代元素是否是最后一个元素
#status.even 是否偶数行
#status.odd 是否奇数行
#status.count 当前行数
#status.index 当前行的序号,从0开始[#status.count=#status.index+1]
#status.first 是否第一行
#status.last 是否最后一行
#status.modules(int) 当前行数取模


4 <s:append var="">
<s:param value=""/>
</s:append>
作为iterator的辅助使用,将多个(param标签表示的)集合合并,
var:表示新生成的集合


5 <s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="3" separator=',' var="ge">
<s:iterator><s:property /><br /></s:property>
</s:generator>
可以将指定字符串按指定分隔符分隔成多个字符串,生成的多个字符串可以使用iterator标签迭代。
(该标签将一个字符串转换成list集合,在标签体内,临时生成的集合在值栈顶端,
标签结束后集合被移出值栈。)
val:指定被解析的字符串
count:可选,指定生成集合的数,若为3,生成的iterator只有val的前三项'aaa,bbb,ccc';(可选)
var:(可选),使用该属性后,可在后续JSP中通过request.getAttribute()来获取Iterator
或者OGNL中,#request.ge或者ge来获取,很多标签有此可选属性
separator:(必须)分隔符
convertor:(可选)


6 <s:sort comparator="" source="" >
...
</s:sort>:排序
comparator:必须,指定排序用的比较器
source:可选,需要排序的对象


7 <s:subset>
<s:iteraotr>...
</s:subset>:截取iterator的一部分(子集),属性全部为可选
count:截取的数量
decider:决定是否将该元素选入子集(可实现过滤,写一个类实现SubsetIteratorFilter.Decider接口中
的boolean decide(Object element)方法,element代表当前判定的元素,如果该方法返回真,
则表明该元素element将被选入子集中),被过滤掉的元素不计入count中,decider的值是上述类
的一个实例对象。
source:集合对象
start:集合中开始的位置


二、数据标签

1 <s:action>:可以允许在JSP页面直接调用Action,在调用的时候可以指定需要被掉用的Action的
namenamespace;如果指定了executeResult参数的属性为true,该标签会把Action的处理结果(就是result
所跳转的那个页面的内容)包含到本页面中。
id:可选,
name:必须的,Action的名字,
namespace:可选,所调用的Action的所在的namespace
executeResult:可选,指定是否将处理结果包含到本页面,默认false不包含
ignoreContextParam:可选,指定该页面的请求参数是否需要传入Action中,默认false传入参数
(ignore是忽视的意思)


2 <s:bean />:依据一个类生成一个javabean对象,可通过param标签传递参数
name:用于生成bean的Java类
var:可选,bean对象名


3 <s:date />:标签用于格式化日期
format:可选,指定格式 eg:
nice:可选,true/false;指定是否输出指定日期和当前时刻的时差,默认false不输出
name:必须,指定要格式化的日期
var/id:可选,将事件对象放入值栈,


4 <s:debug />:用于调试程序,显示信息


5 <s:i18n />:用于访问国际化资源文件的内容(文件名格式:name_zh_CN.properties,name为基本名)
name:指定资源文件的基本名(带范围)。
若文件放于src下则为全局的;放在包下则为包范围的;基本名和Action类的基本类名相同则为Action范围的
<s:text />:用于获取国际化资源文件的内容。
name:对应资源文件中的key
若为textfield获取的话,应该使用key属性对应资源文件的key,不能使用name属性


6、 <s:include value=""/>:导入一个JSP文件,value指定文件路劲名


7 <s:param name="" value="" />:给指定参数设置值


8、 <s:property />:输出值


9 <s:push />:可将程序员在ActionContext中引用的对象压入值栈中,为以后访问对象提供方便
value:指明需要压入值栈的对象


10 <s:set />:声明对象或者设置属性值
name/id/var:变量的名称
scope:范围,page,request,session,application,action,默认在request和ActionContext中
value:变量的值


11 <s:url var="myurl" action="abc" namespace="/uitag">
<s:param name="name" value="ljh" />
</s:url>:生成url
<s:a href="%{myurl}">a标签的链接</s:a>
action:该URL请求的action
namespace:该URL请求的ACTION所在的名空间
method:指明调用Action的什么方法
id/var:该url的ID,引用此URL时用到
生成的路劲为:/struts/uitag/abc.action?name=ljh
》注: %符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值,如value="%{#myurl}"《
<s:set name="Url" value="'http://www.baidu.com'" />
<s:a href="%{Url}">a标签的链接</s:a>
----------------------//<s:url value="#Url" /> //输出的是#myurl
<s:url var="url" value="%{#Url}" /> //输出的是http://www.baidu.com
<s:a href="%{url}">a标签的链接</s:a>


三、UI标签

templateDir:定义模版目录
theme:定义主题名字
template:定义模版名字


通用属性:
cssClass:定义CSS属性类
cssStyle:定义CSS属性
title:定义html title属性
disabled:是否失效
label:
labelPosition:label在form中的位置,从左从上计算
requiredPosition:定义必须的标签在Form中的位置
name:
required:在label上添加一个*
tabIndex:定义html tabIndex属性
value:


1 <s:checkbox name="" label="" value="" />
value:true/false,表示是否选中
<s:checkboxlist name="mylist" list="{'java','.net','php'}" value="{'java','php'}" />
list:复选框列的集合
name:复选框的名字
value:复选框默认选中的
theme:主题(共有属性),struts2默认提供四种:simple、xhtml(默认)、css xhtml、ajax
<s:checkboxlist name="mymap" list="#{'a':'China', 'b':'English', 'c':'Canada'}" listKey="key" listValue="value" value="{'a','b'}" /> 如果集合中存放的是Javabean,则listKey和listValue的值可以直接用OGNL表达式,是bean的属性


2 <s:combobox />:生成一个单行文本框和一个下拉列表框,当行文本框用于输入(有请求参数),
下拉框用于辅助输入(无请求参数),没有实际意义
name:
label:
list:指定下拉框的值
headerKey:下拉框的头ID
headerValue:下拉框的头值


3 <s:radio name="mymap" list="#{1:'China',2:'English',3:'Canada'}" listKey="key" listValue="value" value="2" />表示2对应的默认选中
<s:radio name="mylist" list="{'java','php','c++'}" value="java" />表示java被默认选中
<s:radio name="r3" list="#attr.userList" listKey="id" listValue="name" />


4 <s:select name="mylist" list="{'java','php','c'}" value="java" multiple="" >
<s:optgroup label="数据库" list="{'oracle','mysql'}" />
</s:select>
其他类似单/复选框
multiple:boolean,是否多选
size:设置下拉框显示的选项个数
<s:optgroup label="数据库" list="{'oracle','mysql'}" />:作select的子标签用,在下拉框中分组显示


5 <s:doubleselect />:二级联动级联菜单
name:
list:
doublename:
doublelist:
label:


6 <s:optiontransferselect />:选项转移列表,生成左右两个列表框,可将一个的内容转到另一个


7 <s:updownselect />:可上下选择的select
lable:
name:
list:
emptyOption:boolean,是否加空白行,默认false
moveDownLabel:设置向下移动按钮的文本
moveUpLabel:设置向下移动按钮的文本
selectAllLabel:设置全选按钮的文本
allowMoveDown:
allowMoveUp:
allowSelectAll:是否可以全部选中,为false时selectAllLabel属性不可用


8 <s:token />:加入此标记防止表单重复提交
<s:form>
...<s:token /><s:submnit/>
</s:form>
需要启动两个拦截器:
<action ...>
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result name="invalid.token">...</result>
<result>...</result>
</action>


9 <s:textfield />:生成一个单行文本框
label:显示在文本框外面的提示文字,
value:
maxlength:输入的最大字符数
required:lable显示时加上一个*号(提示必填)
size:文本框的长度
readonly:只读
<s:textarea />:生成一个文本域
cols:
rows:


10 <s:file name="" accept="" />:文件选择标签
accept:指定文件的MIME类型
<s:label/>标签:
<s:submnit name="method:login" />标签:有三种类型
name:
type:指定类型,可以是submit/image/button
src:为image类型的时候指定路径,
action:指定处理的action
method:指定处理的action的方法
disabled:指定此表单是否不可用
预定义的前缀:method/action/redirect/redirect-action
method:取代action默认的execute方法(name="method:login")
action:取代form指定的action,导向另一个action(name="action:regist")
redirect:请求重定向到另一个URL,可以是应用程序外部的URL(name="redirect:http://www.baidu.com")
redirect-action:请求重定向到其他action
<s:reset />:生成一个重置按钮,input类型时不能用label只有用value
type:指定类型为button/input,默认input,


11 <s:form />


四、Dojo插件包的标签

导入dojo插件包:<%@taglib uri="/struts-dojo-tags" prefix="sd" %>
必须在<head>中用<sd:head parseContent="true" />


1 <sd:datetimepicker datetimepicker name="#session.user.birthday"
id="birthday" displayFormat="yyyy-MM-dd" />:日期选择控件
displayFormat:指定选中的日期生成的格式, yyyy-MM-dd
name:可以是OGNL表达式读取的后代的值(Date类型)
value:


2 <sd:tabbedpanelbl />:选项卡控件


3 <sd:textarea />:textarea控件,华丽的文本域
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0 标签