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=""

posted @ 2017-03-17 21:15  AnswerTheQuestion  阅读(144)  评论(0编辑  收藏  举报