SSH框架学习笔记(四)----struts2的标签
- struts2标签的分类:
- UI标签:用于生产HTML元素的标签
- 表单标签
- 非表单标签
- 非UI标签:用于数据访问,逻辑控制
- 流程控制标签
- 数据访问签
- Ajax标签:用于Ajax支持的标签
- struts2标签使用:
- 导入标签库:<%@taglib prefix="s" uri="/struts-tags"%>
- 使用标签:<s:...>
- struts2的OGNL表达式语言:
- OGNL的集合操作:
- 直接创建List类型集合的语法:{e1,e2,e3...}
- 直接生成Map类型的集合的语法:#{key1:value1,key2:value2,Key3:value3,..}
- OGNL提供in和not in 两个运算符判断元素是否在集合中
<s:if test="'foo' in {'foo','bar'}"> 包含 </s:if> <s:else> 不包含 </s:else>
- OGNL允许通过某个规则取得集合子集:
- ?:取出所有符合选择逻辑的子集:person.relatives.{? #this.gender == 'male'}
- ^:取出符合选择逻辑的第一个元素
- $:取出符合选择逻辑的最后一个元素
- 访问静态变量和方法
- OGNL访问静态变量:<s:property value="@java.lang.Math@PI"/>
- OGNL访问静态方法:首先要配置struts常量:<constant name="struts.ognl.allowStaticMethodAccess" value=true>,<s:property value="@java.lang.System@Getenv('JAVA_HOME')">
- OGNL的集合操作:
- 控制标签:
- if/elseif/else标签:根据一个boolean表达式觉定是否计算,输出标签体内容
<s:if test="表达式"> 标签体 </s:if> <s:elseif test="表达式"> 标签体 </s:elseif> <s:else> 标签体 </s:else>
- iterator标签:用于对集合进行迭代
- 3个属性:
- value:指定被迭代的集合
- id:指定集合中的元素
- status:指定迭代式IteratorStatus实例
- 例子
<s:iterator value="{'123','222',''sdfsd}",id="name",status="st"> <tr> <td><s:property value="#st.count"/> <s:property value="name"></td> </tr> </s:iterator>
- 3个属性:
- append标签:讲多个集合对象拼接起来组成一个新集合
- 属性:var:指定新集合的名称
- 例子:
<s:append var="newList"> <s:param value="{....}"/> <s:param value="{....}"/> </s:append>
- generator标签:将指定的字符串按照指定的分隔符分成多个子串
- 属性:
- val:指定被解析的字符串
- separator:指定分隔符
- 例子
<s:generator val="1,2,3,4" separator=","> <s:iterator></s:iterator> </s:generator>
- 属性:
- subset标签:用于取得集合的子集
- 属性:
- count:指定子集中元素个数
- source:指定源集合
- start:指定开始截取位置,第一个元素的start=0
- 例子
<s:subset source="{}", start="1", count="4"> </s:subset>
- sort标签:用于对集合元素进行排序
- 属性:
- comparator:指定排序的Comparator实例
- source:指定被排序集合
- 例子
<s:sort source="{}" camparator="#mycomparator"/> </s:sort>
- 数据标签:
- action:在JSP页面中调用Action
- bean:创建一个bean实例
- date:格式化输出一个日期
- debug:用于在页面上生成一个调试链接
- i18n:用于指定国际化资源文件的basename
- include:在JSP页面中包含其他JSP或者Servlet资源
- param:设置一个参数,通常作为bean,url的子标签
- push:将某个值放入ValueStack的栈顶
- set:用于设置一个新变量,并可以将新变量放入指定的范围
- text:用于输出国际化消息
- url:用于生产url地址
- property:用于输出某个值