Struts2 标签详解
在这里都已infoList这个集合作为示例,以下是Action类中的代码:
public class TestAction extends ActionSupport { private List<Info> infoList; public List<Info> getInfoList() { return infoList; } public void setInfoList(List<Info> infoList) { this.infoList = infoList; } public String myTest(){ infoList=new InfoDao().findall(null); return SUCCESS; } }
通常大家长使用的就不再这里一一赘述,只详细介绍平时大家不常用的:
数据标签
一.property -- 显示数据
1.default --默认值 --字符串,不是放OGNL
<s:property value="infoListaaa" default="aaa" />
<!-- 很显然infoListaaa是获取不到值的,但是当我设置default时,显示效果如下图所示。注意:default中只识别字符串! -->
2.escape -- true/false 默认是true, false---html效果显示
<s:property value="'<h1>AAA</h1>'" escape="false" /> <!-- 当是true时,显示出来的就是<h1>AAA</h1>的字符串,但改为false时显示效果如下图所示: -->
注意:value中识别的是OGNL表达式,要想让它识别字符串就要在其中加上单引号!
3.value -- 要显示的内容,OGNL表达式 如果要显示字符串,需要用''引起来。
二.set -- 设置一个新变量,赋值
1.var,name -- 新变量名
2.scope --范围 page/request/session/application
3.value --变量值,OGNL表达式,要想让其识别字符串就要加单引号。
<s:set var="s" value="infoList.size()"></s:set> <s:property value="#s" /><!-- 取值时在变量名前加上#,也可以不加 -->
三.url -- 生成网址
1.var -- 变量名
2.value--要生成的URL地址,字符串需转义自OGNL,要手动写出完整的地址。
<s:url var="u" value="baidu"></s:url> <s:property value="u" />
输出结果是:
3.action -- 要生成的URL地址,字符串需转义自OGNL,生成出绝对路径
<s:url var="ua" action="baidu"></s:url> <s:property value="ua" />
输出结果是:
通常都会选择action来生成动态url。注意:action中也是只识别字符串,要想让它识别OGNL表达式,就要用%{}转义!
当生成a标签的href时,在里边就要放一个标签进去,这样她才能识别,如下所示:
<a href="<s:property value='ua' />">aaa</a>
四.bean -- JavaBean的实现类
1.name -- 要实例化的Java类
<s:bean name="com.maya.model.Info" var="bbb"> <s:param name="code" value="'这是自定义的代号'"></s:param> </s:bean> <s:property value="#bbb.code"/> <!-- 实例化一个对象,用param在bean中给其赋值 -->
五.param -- 生成参数
name -- 标签名
value -- OGNL表达式,加单引号
六.date -- 格式化输出日期
name -- 要格式化的日期值 --- OGNL表达式
format --- 格式化显示的格式。
七.include -- 将jsp或servlet包含到页面中
value -- JSP或Servlet文件
八.debug
控制标签
1.if...else if ...else
test -- 表格式 OGNL
2.iterator
var(变量名)
value --OGNL
status(状态) :even(奇数),odd(偶数),first,last,index(索引号),count(总数)
begin
end
step
<s:iterator var="i" value="infoList" status="st"> <s:property value="#st.index+1"/>.<!-- 所以是从0开始的,我们可以在其中进行运算,让其从一开始 --> <s:property value="name"/><!-- 可以直接写infoList中的属性名称 --> <s:property value="#i.name"/><!-- 也可以直接写#i.属性名称,必须加# --><br> </s:iterator>
3.append/merge/subset(合并集合)
append(两个集合交叉合并)
merge(俩个集合正常合并)
subset(截取,从第几个开始合并?)
在这里不一一做示范了。
id--新的对象名
<param> 子元素
<s:set value="{'aaa','bbb','ccc','ddd'}" var="aaa"></s:set> <s:set value="{'111','222','333','444'}" var="bbb"></s:set> <s:merge var="all"><!-- 将上面两个集合合并起来 --> <s:param name="one" value="#aaa"></s:param> <s:param name="two" value="#bbb"></s:param> </s:merge> <s:iterator value="#all" var="s"> <s:property value="#s"/><br> </s:iterator>
4.generater(拆分)
seperator--分隔符
val--被分隔的字符串
var -- 分隔成的数组名
<s:generator separator="|" val="'aaa|bbb|ccc|ddd|eee'" var="ss"></s:generator><!-- 定义一个字符串用|来分隔 --> <s:iterator value="#ss" var="s"> <s:property value="#s"/><br> </s:iterator>
5.sorted(对集合进行排序)
source --- 集合
comparator -- 对比器对象
<s:set value="{'aaaa','bbbbbb','ccc','ddddd'}" var="arr"></s:set> <s:bean name="com.maya.util.MyComparator" var="myComparator"></s:bean> <!-- 实例化要找到的工具类 --> <s:sort comparator="myComparator" var="sss" source="#arr"> <s:iterator var="str" ><!-- 定义一个变量,这个变量就是指的上述的已经排好序的集合 --> <s:property value="#str"/><br> </s:iterator> </s:sort>
com.maya.util.MyComparator
package com.itnba.maya.util; import java.util.Comparator; public class MyComparator implements Comparator<String>{ @Override public int compare(String o1, String o2) {//参数可以是object, if(o1.length() > o2.length()){ return -1; } else if(o1.length() == o2.length()){ return 0;//长度相等时 } else{ return 1; } } }
这是给字符串排序,给对象,集合排序也是这个思路。
UI标签
1.form
action --
method
<s:form action="News_get" method="post">
当不指定action时,它会自动指定一个action。
2.textfield(单行文本) / textarea(多行文本)
name -- OGNL对象
label -- 中文提示
value -- 可以转成字符串的OGNL
3.password
4.checkboxlist(复选框,不是checkbox!) radio(单选按钮)
name -- name值
list -- value集合
label --内容集合
listkey --指定集合对象中的哪个属性作为选项的value
listvalue--指定集合对象中的哪个属性作为选项的内容
5.select
list --value集合
name --name值
headerkey --开头值
headervalue -开头内容
listkey --指定集合对象中的哪个属性作为选项的value
listvalue--指定集合对象中的哪个属性作为选项的内容
6.checkbox
fieldvalue-value值
name-name值
7.fielderror
fieldname -- 要验证的字段
8.a
action=""