004 | Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 |
005 | Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用。包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用 |
007 | (1)UI标签:(User Interface, 用户界面)标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签 |
008 | (2)非UI标签,主要用于数据访问,逻辑控制等的标签。非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能的) |
012 | <%@ taglib uri="/struts-tags" prefix="s"%> |
013 | (2)在web.xml中声明要使用的标签 这样是struts2 2.3.1.2版本的引入方式 |
015 | < filter-name >struts2</ filter-name > |
016 | < filter-class >org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</ filter-class > |
021 | < s:property
value = "%{@cn.csdn.hr.domain.User@Name}" />< br /> |
022 | < s:property
value = "@cn.csdn.hr.domain.User@Name" />< Br /> <!--
以上两种方法都可以 --> |
023 | < s:property
value = "%{@cn.csdn.hr.domain.User@study()}" /> |
024 | 以上可以访问某一个包的类的属性的集中方式,study()是访问方法的方法,并输出。 |
027 | 以下用java代码代替的,访问某一个范围内的属性 |
029 | //采用pageContext对象往page范围内存入值来 验证#attr搜索顺序是从page开始的 ,搜索的顺序为:page,reques,session,application。 |
030 | set存值的时候存到的是request中,在jsp页面中访问的时候不用加任何的标识符,即可直接访问,如果不同的作用域不一样了, |
031 | pageContext.setAttribute("name", "laoowang", PageContext.PAGE_SCOPE); |
033 | < s:property
value = "#attr.name"
/> |
039 | < h3 >获取的是requet中的对象值</ h3 > |
040 | 第一种方式:< s:property
value = "#request.user1.realName" /> |
042 | 第二种方式:< s:property
value = "#request.user1['realName']" /> |
044 | 第三种方式:< s:property
value = "#user1.realName" /> |
046 | 第四种方式:< s:property
value = "#user1['realName']" /> |
048 | 第五种方式:${requestScope.user1.realName } || ${requestScope.user1['realName'] } |
050 | 第六种:< s:property
value = "#attr.user1.realName" /> |
051 | attr对象按page==> request sessionapplictio找的 |
054 | < h3 >获取session中的值</ h3 > |
055 | 第一种方式:< s:property
value = "#session.user1.realName" /> |
057 | 第二种方式:< s:property
value = "#session.user1['realName']" /> |
060 | 第五种方式:${sessionScope.user1.realName } || ${sessionScope.user1['realName'] } |
062 | < h3 >获取application中的对象的值</ h3 > |
063 | 第一种方式:< s:property
value = "#application.user1.realName" /> |
065 | 第二种方式:< s:property
value = "#application.user1['realName']" /> |
068 | 第五种方式:${applicationScope.user1.realName } || ${applicationScope.user1['realName'] } |
072 | <!-- 设置set集合 value--> |
073 | <!-- status 可选属性,该属性指定迭代时的IteratorStatus实例 --> |
074 | <!-- value="#attr.list" list存放到了request中 可以value="#request.list" |
075 | statu.odd返回当前被迭代元素的索引是否是奇数 |
077 | < s:set
name = "list"
value = "{'a','b','c','d'}" ></ s:set > |
078 | < s:iterator
var = "ent"
value = "#request.list"
status = "statu" > |
079 | < s:if
test = "%{#statu.odd}" > |
080 | < font
color = "red" >< s:property
value = "#ent"
/> |
084 | < s:property
value = "#ent"
/> |
091 | 语法格式:# {key:value,key1:value1,key2:value2,.....} |
092 | 以上的语法中就直接生成了一个Map类型的集合,该Map对象中的每个key-value对象之间用英文的冒号隔开 |
097 | < s:set
var = "map"
value = "#{'1':'laowang','2':'老王','3':'猩猩'}" ></ s:set > |
100 | < s:iterator
value = "#map" > |
101 | < s:property
value = "key"
/>:::< s:property value = "value"
/> |
108 | <!-- 遍历出价格大于3000的 --> |
109 | < s:iterator
var = "user"
value = "#session['users']" > |
110 | < s:if
test="%{#user['price']>3000}"> |
111 | < s:property
value = "#user['price']" /> |
116 | < hr
color = "blue" /> <!-- $是取出价格 大于3000的最后一个值 --> |
117 | < s:iterator
var = "u"
value="#session.users.{$(#this['price']>3000)}"> |
118 | < s:property
value = "price" /> |
121 | 注:users是User的对象,price是User中的一个属性
|
124 | iterator标签用于对集合进行迭代,这里的集合包含List、Set和数组。 |
125 | < s:set
name = "list"
value = "{'zhangming','xiaoi','liming'}"
/> |
126 | < s:iterator
value = "#list"
status = "st" > |
127 | < font
color=<s:if test = "#st.odd" >red</ s:if >< s:else >blue</ s:else >> |
128 | < s:property
/></ font >< br > |
130 | value:可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。 |
132 | status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法: |
133 | int getCount(),返回当前迭代了几个元素。 |
134 | int getIndex(),返回当前迭代元素的索引。 |
135 | boolean isEven(),返回当前被迭代元素的索引是否是偶数 |
136 | boolean isOdd(),返回当前被迭代元素的索引是否是奇数 |
137 | boolean isFirst(),返回当前被迭代元素是否是第一个元素。 |
138 | boolean isLast(),返回当前被迭代元素是否是最后一个元素。 |
142 | < s:set
name = "age"
value = "21"
/> |
146 | < s:elseif
test = "#age==21" > |
155 | < s:url
action = "test"
namespace = "/tag"
var = "add" > |
156 | < s:param
name = "username" >laowangang</ s:param > |
157 | < s:param
name = "id" >12</ s:param > |
159 | < s:a
href = "%{add}" >测试URL</ s:a > |
160 | < s:a
action = "test"
namespace = "/tag" ></ s:a > |
164 | pageContext.setAttribute("birth",new Date(200,03,10),PageContext.REQUEST_SCOPE); |
166 | < s:date
name = "#request.birth"
format = "yyyy年MM月dd日" /> |
167 | < s:date
name = "#request.birth"
nice = "true" /> |
168 | 这个标签是按照format的格式去输出的。 |
174 | < s:form
action = "test"
namespace = "/tag" > |
175 | < s:textfield
label = "用户名"
name = "uname"
tooltip = "你的名字"
javascriptTooltip = "false" ></ s:textfield > |
176 | < s:textarea
name = "rmake"
cols = "40"
rows = "20"
tooltipDelay = "300"
tooltip = "hi"
label = "备注"
javascriptTooltip = "true" ></ s:textarea > |
177 | < s:password
label = "密码"
name = "upass" ></ s:password > |
178 | < s:file
name = "file"
label = "上传文件" ></ s:file > |
179 | < s:hidden
name = "id"
value = "1" ></ s:hidden > |
183 | <option value="listKey">listValue</option> |
185 | < s:select
list = "#{'1':'博士','2':'硕士'}"
name = "edu"
label = "学历"
listKey = "key"
listValue = "value" ></ s:select > |
187 | < s:select
list = "{'java','.net'}"
value = "java" ></ s:select > <!-- value是选中的 --> |
190 | < s:checkbox
label = "爱好 "
fieldValue = "true"
name = "checkboxFiled1" ></ s:checkbox > |
193 | < s:checkboxlist
list = "{'java','css','html','struts2'}"
label = "喜欢的编程语言"
name = "box"
value = "{'css','struts2'}" ></ s:checkboxlist > |
197 | < s:checkboxlist
list = "#{1:'java',2:'css',3:'html',4:'struts2',5:'spring'}"
label = "喜欢的编程语言"
name = "boxs"
value = "{1,2}" ></ s:checkboxlist > |
203 | <input type="text" name="boxs" value="listKey">显示值listValue |
209 | pageContext.setAttribute("sex","男",PageContext.REQUEST_SCOPE); |
210 | pageContext.setAttribute("sex1","男",PageContext.REQUEST_SCOPE); |
212 | < s:radio
list = "{'男','女'}"
name = "sex"
value = "#request.sex" ></ s:radio > |
215 | < s:radio
list = "#{1:'男',2:'女'}"
name = "sex1"
listKey = "key"
listValue = "value"
value = "#request.sex1" ></ s:radio > |
220 | < s:submit
value = "提交" ></ s:submit > |
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理