Struts2常用标签

Struts2.x框架 专栏收录该内容
6 篇文章 0 订阅

Struts2常用标签

1.常用标签用法介绍

Struts2标签可以分为UI标签,非UI标签和Ajax标签三大类:
(1)UI标签:主要用于生成HTML页面元素,它又可分为表单标签(主要用于生成HTML中的表单)和非表单标签(主要包含一些常用功能标签,例如显示日期或下拉列表等)。
(2)非UI标签:主要用于数据逻辑输出和数据访问,他可以分为数据标签(主要用于数据的存储和处理)和控制标签(主要用于条件和循环等流程控制)。
(3)Ajax标签:主要用于支持Ajax技术。

1.常见的控制标签
  • if/else标签
属性名必选类型
testboolean
testboolean
  • iterator标签
属性名必选说明
value指定迭代的集合
var用来引用被压入值栈中值的名字
begin迭代开始时的索引,默认为0
end迭代结束时的索引,默认为:集合长度-1
step步长。每次迭代索引的递增值,默认为1
2.常见的数据标签
  • property标签( property标签用于输出值栈中对象的属性值)。
属性名必选说明
value指定需要输出的属性值
  • param标签(param标签被用作其他标签的子标签,为其他它签提供参数)。
属性名必选说明
name要设置的参数名字
value要设置参数的值
  • date标签(date标签用来格式化输出一个日期。)
属性名必选说明
name要格式化的日期值,必须是java.util.Date类实例
format指定日期的输出格式
3.常见的表单UI标签
  • form标签( form标签用于生成一个HTML表单)。
属性名必选说明
action指定提交action的名字,不需要添加.action后缀
namespace指定提交action所属的名称空间
methodHTML表单的method属性
enctype表单数据的封装方式
  • textfield标签( textfield标签用于在页面生成一个单行文本输入控件)。
属性名必选说明
size指定文本框的可视尺寸
maxlength指定文本框可以输入字符的最大长度
readonly当设置为true时,文本框表示只读
  • textarea标签( textarea标签用于在页面生成一个单行文本输入控件)。
属性名必选说明
cols指定多行文本输入框的列数
rows指定多行文本输入框的行数
readonly当设置为true时,用户不能在文本框输入文本
  • select标签( select标签用来在页面中生成一个下拉列表框)。
属性名必选说明
list要迭代的集合
listKey指定使用集合中的哪个属性作为选项的value
listValue指定使用集合中的哪个属性作为选项的内容
  • checkboxlist标签( checkboxlist标签用来一次性在页面中创建多个复选框)。
属性名必选说明
list要迭代的集合
listKey指定使用集合中的哪个属性作为选项的value
listValue指定使用集合中的哪个属性作为选项的内容

2.常用标签用法展示

  1. 新建简单Java类存储信息。
import java.io.Serializable;
import java.util.Date;

@SuppressWarnings("serial")
public class Dept implements Serializable {
    private Integer deptno;
    private String dname;
    private Date credate;

    public Dept() {
    }
    //setter.getter略
}
  1. 新建一个LabelAction的Action类,与页面联系在一起(如果想要使用struts2的标签,那么不能直接对引入了标签的页面进行访问,而是应通过Action找到页面)
import com.bank.vo.Dept;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@SuppressWarnings("serial")
@ParentPackage(value="root")
@Namespace(value="/pages/tags")
@Action(value="LabelAction")
@Results(value={
        @Result(name ="success" ,location = "/pages/tags/tags.jsp",type = "dispatcher" )
})
public class LabelAction extends ActionSupport {

    public String tagsDemo(){
        Dept dept = new Dept();
        dept.setCredate(new Date());
        dept.setDeptno(1);
        dept.setDname("财务部");
        ServletActionContext.getRequest().setAttribute("dept",dept);
        List<Dept> allDepts = new ArrayList<Dept>();
        allDepts.add(dept);
        for(int x=2;x<5;x++){
            Dept dp = new Dept();
            dp.setCredate(new Date());
            dp.setDeptno(x);
            dp.setDname("部门-"+x);
            allDepts.add(dp);
        }
        ServletActionContext.getRequest().setAttribute("allDepts",allDepts);
        return ActionSupport.SUCCESS;
    }
}
  1. 新建资源文件Messages.properties
info.msg=Hello{0},{1}Hello
  1. 在Struts.properties文件里为新建的资源文件注册
struts.i18n.encoding=utf-8
struts.custom.i18n.resources=Messages,Validate
struts.locale=zh_CN
  1. 新建演示页面(引入Struts2标签库)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Tags</title>
</head>
<body>
<label>部门编号:</label><s:property value="#request.dept.deptno" /><br>
<label>部门名称:</label><s:property value="#request.dept.dname" /><br>
<label>创建日期:</label><s:property value="#request.dept.credate" /><br>
<hr>
<label>日期标签:</label><s:date name="#request.dept.credate" format="yyyy-MM-dd HH:mm:ss.SSS" />
<hr>
<label>迭代输出</label><br>
<s:if test="#request.allDepts!=null">
    <ul>
        <s:iterator value="#request.allDepts" var="dp">
            <li>
                <label>|-部门编号:</label>${dp.deptno}
                <label>|-部门名称:</label>${dp.dname}
                <label>|-创建日期:</label>${dp.credate}
            </li>
        </s:iterator>
    </ul>
</s:if>
<hr>
<label>下拉列表:</label>
<s:select list="#request.allDepts" listKey="deptno" listValue="dname" theme="simple" />
<hr>
<label>复选框:</label>
<s:checkboxlist list="#request.allDepts" listKey="deptno" listValue="dname" name="deptnos" theme="simple" />
<hr>
<label>读取资源文件:</label><br>
<s:i18n name="Messages">
    <s:text name="info.msg">
        <s:param>世界</s:param>
        <s:param>你好</s:param>
    </s:text>
</s:i18n>
</body>
</html>
  1. 显示效果如下:
    在这里插入图片描述
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:黑客帝国 设计师:我叫白小胖 返回首页

打赏作者

NicholasGUB

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值