Struts2-Struts2标签

引入标签

<%@taglib prefix="s" uri="/struts-tags"%>

一、通用标签(Generic Tag)

1、数据标签

  • action配置
<action name="Data_label" class="com.pb06.demo01.Tags">
    <result>/jsp/06_Struts2标签/01_数据标签.jsp</result>
</action>
  • action类代码
public class Tags extends ActionSupport {

    private Date currentDate;
    private String name;

    @Override
    public String execute() throws Exception {
        currentDate = new Date();
        name = "王五";
        return SUCCESS;
    }

    public Date getCurrentDate() {
        return currentDate;
    }

    public void setCurrentDate(Date currentDate) {
        this.currentDate = currentDate;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
  • 页面代码(重点)
<body>
<!-- 输出值栈和Stack Context -->
<!-- value:用来获取值的OGNL表达式
     default:value属性为空时输出此内容
     escapeHtml:是否转义HTML,默认true -->
<s:property value="'<hr/>'" default="当空值时输出这个" escapeHtml="false"/>

<!-- 查看值栈及Stack Context -->
<s:debug></s:debug>

<!-- 格式化输出一个日期 -->
<s:date name="currentDate" format="yyyy-MM-dd HH:mm:ss"/>

<p/>

<!-- 定义变量并赋值 -->
<!-- var:变量名
     value:变量值
     scope:作用域 -->
<s:set var="vipname" value="name" scope="session"></s:set>
<s:property value="#session.vipname"/>

<p/>

<!-- 超链接和URL地址 -->
<s:url value="http://www.baidu.com">在页面上输出百度网址</s:url>

<br/>

<s:url value="http://www.baidu.com" var="url">把百度网址存入变量url中
<!-- 参数标签 -->
<!-- value值如果是字符串要加引号
      这样url地址是:'http://www.baidu.com?str=abc'-->
<s:param name="str" value="'abc'"></s:param>
</s:url>

<br/>
<!-- href属性的值默认是字符串常量,如果使用OGNL表达式,则需要把表达式放在%{}中 -->
<s:a href="%{#url}">百度</s:a>

<%-- 和<jsp:include>一样都是动态包含,都是被包含的页面先生成HTML在被包含进来  --%>
<s:include value=""></s:include>
</body>
  • 页面输出结果

这里写图片描述

2、控制标签

  • action配置
<action name="Control_tag" class="com.pb06.demo02.HouseAction">
    <result>/jsp/06_Struts2标签/02_控制标签.jsp</result>
</action>
  • action类代码
1、JavaBean

public class Houses {

    private String houseId;
    private Street street;
    private String title;
    private Date addDate;

    //构造方法及get、set方法略
}

public class Street {

    private String streetName;

    //构造方法及get、set方法略
}

2、action类

public class HouseAction extends ActionSupport {

    private List<Houses> houses;

    @Override
    public String execute() throws Exception {
        houses = new ArrayList<Houses>();
        Street s1 = new Street("街道一");
        Street s2 = new Street("街道二");
        Date date = new Date(1991, 1, 1, 3, 20, 1);
        Houses h1 = new Houses("01", s1, "俩室一厅", date);
        date = new Date(2000, 4, 1, 5, 20, 1);
        Houses h2 = new Houses("02", s2, "三室一厅", date);
        houses.add(h1);
        houses.add(h2);
        return SUCCESS;
    }

    public List<Houses> getHouses() {
        return houses;
    }

    public void setHouses(List<Houses> houses) {
        this.houses = houses;
    }

}
  • 页面代码(重点)
<body>
<s:set name="score" value="80"></s:set>
<!-- if elseif else -->
<s:if test="#score>=90">
    尖子生
</s:if>
<s:elseif test="#score<=60">
    普通学生
</s:elseif>
<s:else>
    差生
</s:else>

<!-- iterator -->
<table border="1">
    <tr>
        <td>房屋ID</td>
        <td>房屋所处街道</td>
        <td>房屋标题</td>
        <td>发布时间</td>
    </tr>
    <!-- value:被循环访问的集合,这个属性的值是个OGNL表达式
         var:变量名称,用来引用当前循环访问的集合元素
         status:返回当前循环的各种信息
                count:集合含有多少个对象
                index:正在循环的这一项的索引
                even:当前遍历到的对象是否处于列表的偶数索引位置
                odd:当前遍历的对象是否处于列表的奇数索引位置 -->
    <s:iterator var="houseItor" value="houses" status="status">
        <s:if test="#status.even">
            <tr bgcolor="yellow">
        </s:if>
        <s:if test="#status.odd">
            <tr bgcolor="gray">
        </s:if>
            <td><s:property value="#houseItor.houseId"/></td>
            <td><s:property value="#houseItor.street.streetName"/></td>
            <td><s:property value="houseItor.title"/></td>
            <td><s:date name="#houseItor.addDate" format="yyyy-MM-dd HH:mm:ss"/></td>
            </tr>
    </s:iterator>
</table>
</body>
  • 页面结果

这里写图片描述


二、UI标签

  • action配置
<action name="UI_Tags01" class="com.pb06.demo03.Provinces">
    <result>/jsp/06_Struts2标签/03_UI标签01.jsp</result>
</action>
  • action代码
1、JavaBean

public class Province {

    private int pid;
    private String pname;

    //构造方法及get、set方法略
}

2、action

public class Provinces extends ActionSupport {

    List<Province> list;

    @Override
    public String execute() throws Exception {
        list = new ArrayList<Province>();
        list.add(new Province(1, "江苏省"));
        list.add(new Province(2, "山东省"));

        return SUCCESS;
    }

    public List<Province> getList() {
        return list;
    }

    public void setList(List<Province> list) {
        this.list = list;
    }

}
  • 页面代码(重点)
<body>
<!-- form表单 -->
<!-- name:表单的名称
     action:处理该表单数据的URL
     method:提交方式,一般为get、post -->
<s:form name="" action="" method=""></s:form>

<!-- 单行文本框 -->
<!-- name:文本框名称
     value:文本框中显示的文字
     maxlength:文本框中的最大字符数
     readonly:是否为只读 -->
<s:textfield name="单行文本框" value="这是一个单行文本框" maxlength="20" readonly="true"></s:textfield>

<p/>

<!-- 多行文本域 -->
<!-- name:文本域名称
     value:文本域中显示的文字
     cols:文本域的宽度,以字符数表示
     rows:文本域的高度,以字符行数表示
     readonly:是否为只读 -->
<s:textarea name="多行文本域" value="这是一个多行文本域" cols="100" rows="20" readonly="false"></s:textarea>

<p/>

<!-- 表单提交按钮 -->
<s:submit value="提交"></s:submit>

<p/>

<!-- 下拉框 -->
<!-- name:下拉框的名称
     list:生成下拉框的集合
     listKey:生成的下拉项的value属性
     listValue:生成的下拉项显示的文字 -->
<!-- 第一种实现方式 -->
<s:select list="{'第一页','第二页','第三页'}" label="页码"></s:select>
<p/>

<!-- 第二种实现方式 -->
<s:select list="list" name="province" listKey="pid" listValue="pname"></s:select>

</body>
  • 输出结果

这里写图片描述


三、Ajax标签

struts2提供了一些简单的Ajax,对于复杂的Ajax实现一般采用jQuery+JSON+Struts2一起来实现

  • 日历控件示例

这里写图片描述

  • 效果

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值