Struts2常用标签
1.常用标签用法介绍
Struts2标签可以分为UI标签,非UI标签和Ajax标签三大类:
(1)UI标签:主要用于生成HTML页面元素,它又可分为表单标签(主要用于生成HTML中的表单)和非表单标签(主要包含一些常用功能标签,例如显示日期或下拉列表等)。
(2)非UI标签:主要用于数据逻辑输出和数据访问,他可以分为数据标签(主要用于数据的存储和处理)和控制标签(主要用于条件和循环等流程控制)。
(3)Ajax标签:主要用于支持Ajax技术。
1.常见的控制标签
属性名 | 必选 | 类型 |
---|
test | 是 | boolean |
test | 是 | boolean |
属性名 | 必选 | 说明 |
---|
value | 否 | 指定迭代的集合 |
var | 否 | 用来引用被压入值栈中值的名字 |
begin | 否 | 迭代开始时的索引,默认为0 |
end | 否 | 迭代结束时的索引,默认为:集合长度-1 |
step | 否 | 步长。每次迭代索引的递增值,默认为1 |
2.常见的数据标签
- property标签( property标签用于输出值栈中对象的属性值)。
- param标签(param标签被用作其他标签的子标签,为其他它签提供参数)。
属性名 | 必选 | 说明 |
---|
name | 否 | 要设置的参数名字 |
value | 否 | 要设置参数的值 |
- date标签(date标签用来格式化输出一个日期。)
属性名 | 必选 | 说明 |
---|
name | 否 | 要格式化的日期值,必须是java.util.Date类实例 |
format | 否 | 指定日期的输出格式 |
3.常见的表单UI标签
- form标签( form标签用于生成一个HTML表单)。
属性名 | 必选 | 说明 |
---|
action | 否 | 指定提交action的名字,不需要添加.action后缀 |
namespace | 否 | 指定提交action所属的名称空间 |
method | 否 | HTML表单的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.常用标签用法展示
- 新建简单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() {
}
}
- 新建一个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;
}
}
- 新建资源文件Messages.properties
info.msg=Hello{0},{1}Hello
- 在Struts.properties文件里为新建的资源文件注册
struts.i18n.encoding=utf-8
struts.custom.i18n.resources=Messages,Validate
struts.locale=zh_CN
- 新建演示页面(引入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>
- 显示效果如下:
