Struts——标签
来源:互联网 发布:台湾同性网络剧2017 编辑:程序博客网 时间:2024/05/22 03:16
为什么要使用标签
标签的作用:对于一个MVC框架来说,model就不用说了,重点是实现控制和视图两个部分。在struts中,控制器主要有Action来提供支持的,视图则是由标签来提供的。(struts2内建的标签库简化了JSP页面的输出逻辑的实现,可以完全避免在JSP页面中使用JAVA脚本,提高了表现组件的可维护性)
UI标签:
表单标签
在普通HTML页面中,表单使用的是标签
<form action="/hellodworld/**.action" method="post/get"></form>
Struts2中有对应的标签:
<s:form action="**.action" method="post"></form><s:form action="**.action" method="post" namespace="/test"></form>
的action属性不用带应用上下文,例如:/helloworld,可以使用namespace属性来指定使用到的命名空间。
单选框标签
<s:checkbo label="已婚" name="user.married" value="false" fieldValue ="false">
value:是否选中
fieldValue:相当于传统checkbox中的value值
复选框
list:用于生成单选框的集合
listkey:生成的radio的value属性
listValue:生成的radio后面显示的文字
value:当前的默认选项
<s:checkboxlist name="user.hobbies" list="hobbies"/><s:checkboxlist name="user.hobbies" list="'篮球','足球','排球'"/><s:checkboxlist name="user.hobbies" list="hobbies" listKey="hid" listValue="hname" value={...}/>
下拉框
<!-- 直接指定list集合里面的值--><s:combobox label="选择你喜欢的颜色" name="colorNames"headerValue="------请选择------" headerKey="1"list="{'红','橙','黄','绿','青','蓝','紫'}" /><!-- 动态绑定list集合里面的值 --><s:combobox label="选择你喜欢的颜色" name="colorName"headerValue="------请选择------" headerKey="1" list="colors" /><!-- 动态生成的值 --><s:bean name="struts.util.Counter" var="year"><s:param name="first" value="1990"/><s:param name="last" value="2000"/> </s:bean>
二级选择框
TestAction:
Map<String, List<String>> map = new HashMap<>(); List<String> l1 = new ArrayList<>(); l1.add("a"); l1.add("b"); map.put("一", l1); List<String> l2 = new ArrayList<>(); l2.add("aaa"); l2.add("bbb"); map.put("二", l2); List<String> l3 = new ArrayList<>(); l3.add("aaaaaaaa"); l3.add("bbbbbbbb"); map.put("三", l3);
<s:doubleselect label="选项" name="user.ch1" list="%{map.entrySet()}" listKey="key" listValue="key" doubleName="user.ch2" doublelist="value"/>
如图:
属性说明:
formName:对应的表单名称。
label: 该级联下拉列表的标签。
name:第一个下拉列表的名称。
id:第一个下拉列表的id的名称。
list:指定用于输出第一个下拉列表框中选项的集合。
listKey:指定集合元素中的某个属性作为第一个下拉列表的value。(提交是的参数名)
listValue:指定集合元素中的某个属性作为第一个下拉框的标签。(显示出来的值)
其他同理。
单选框标签
list:用于生成单选框的集合
listKey:生成radio的value属性
listValue:生成radio后面显示的文字
value:当前默认选项
<s:radio name="user.gender" list="{‘男’, ‘女’}" listKey="name" listValue="age"/><s:radio name="user.gender" list="#{‘m’:’男’, ‘f’:’女’}" listKey="key" listValue="value"/><s:radio name="user.major.majorid" list="majorList" listKey="majorid" listValue="name"/>
非UI标签
标签
property标签用于输出指定的值,这个值可以是任何ONGL可以访问到的值,例如Action的属性,或者是request,session,application作用域中的值,也可以是某个类的静态方法和静态属性值,甚至是Math类中的方法。
获取的是requet中的对象值
<s:property value="#request.user1.realName"/> <s:property value="#request.user1['realName']"/> <s:property value="#user1.realName"/> <s:property value="#user1['realName']"/> ${requestScope.user1.realName } || ${requestScope.user1['realName'] } <s:property value="#attr.user1.realName"/>
获取session中的值
<s:property value="#session.user1.realName"/> <s:property value="#session.user1['realName']"/> ${sessionScope.user1.realName } || ${sessionScope.user1['realName'] }
获取application中的对象的值
<s:property value="#application.user1.realName"/> <s:property value="#application.user1['realName']"/> ${applicationScope.user1.realName } || ${applicationScope.user1['realName'] }
标签
iterator标签用于对集合进行迭代,这里的集合包含List、Set和数组。
value:可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。
id:可选属性,指定集合里元素的id。
status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
int getCount(),返回当前迭代了几个元素。
int getIndex(),返回当前迭代元素的索引。
boolean isEven(),返回当前被迭代元素的索引是否是偶数
boolean isOdd(),返回当前被迭代元素的索引是否是奇数
boolean isFirst(),返回当前被迭代元素是否是第一个元素。
boolean isLast(),返回当前被迭代元素是否是最后一个元素。
直接创建List类型集合的语法为: {e1, e2, e3, …}。
直接创建Map类型集合的语法为: # {key0:value0, key1:value1, key2:value2,…..}。
第一种:list或set集合中的使用
<!-- 使用set生成一个集合--> <s:set name="list" value="{'a','b','c','d'}"></s:set> <!-- list存放默认到request中,以value="#request.list" 引用 --> <s:iterator var="ent" value="#request.list" status="statu"> <s:property value="#ent" /> </s:iterator> <s:iterator value="{'a','b','c'}" id='char' status='st'> <s:if test="#st.even"> 现在的索引是奇数为:<s:property value='#st.index'/> </s:if> 当前元素值:<s:property value='char'/> </s:iterator>
第二种:map集合中的使用
map集合生成语法格式:# {key0:value0, key1:value1, key2:value2,…..}。以上的语法中就直接生成了一个Map类型的集合,该Map对象中的每个key-value对象之间用英文的冒号隔开,多个元素之间用逗号分隔。
<s:set var="map" value="#{'1':'laowang','2':'老王','3':'猩猩'}"></s:set> <s:iterator value="#map"> <s:property value="key" /> : <s:property value="value" /> </s:iterator> <s:iterator value="map" id="id" status="st"> 编号 : <s:property value='#st.count'/> key : <s:property value='key'/> value:<s:property vlaue='value'/> </s:iterator>
第三种:集合的筛选遍历
<!-- 遍历出价格大于3000的 --> <s:iterator var="user" value="#session['users']"> <s:if test="%{#user['price']>3000}"> <s:property value="#user['price']"/> </s:if> </s:iterator> <!-- $是取出价格 大于3000的最后一个值 --> <s:iterator var="u" value="#session.users.{$(#this['price']>3000)}"> <s:property value="price"/> </s:iterator>
第四种:遍历2个list
List<AttrName> attrN {color,size,style} List<AttrValue> attrV {red,20,gay}这2个list的元素是一一对应的,一个attrN对应一个attrV <s:iterator value="%{attrN }" id="id" status="status"> index is : <s:property value='status.index'/> attrName is : <s:property value='id'/> or <s:property value='%{id}'/> attrName is : <s:property value='%{attrV[#status.index]}'/> </s:iterator>
- Struts——标签
- Struts —— Logic 标签
- struts标签——html
- struts标签——bean
- struts——/struts-tags.tld 标签库
- struts标签学习——logic
- Struts2笔记——struts常用标签
- Struts1.3——Struts标签
- 【struts】——bean_write标签使用
- Struts 2的标签库(2)——控制标签
- Struts 2的标签库(3)——数据标签
- Struts 2的标签库(4)——标表单标签与非表单标签
- Struts2——(4)OGNL与struts标签
- 菜鸟学习Struts——bean标签库
- Struts2学习——1700Struts通用标签
- Struts2学习——1800Struts控制标签
- Struts2学习笔记(四)——Struts标签相关
- Struts框架(三)——标签库
- UISlider
- windows mysql 自动备份的几种方法
- 微软100题(27)下台阶问题
- 在c++中使用protobuf
- Knockout开发中文API系列3–使用计算属性
- Struts——标签
- iOS应用架构谈 开篇
- [算法]快排-快速排序
- Android SurfaceView实战 打造抽奖转盘
- 算有几个简单路径对
- [Mybatis + oracle] 处理大于号小于号
- Knockout开发中文API系列4–监控属性数组
- ActionBar的使用
- va_start和va_end的使用及原理