1.Strut2标签的分类
Struts2标签库主要分为两类:普通标签和Ui标签
普通标签的主要功能是在页面生成时控制页面代码的执行过程。
UI标签的主要功能是以丰富且可复用的HTML文件显示数据。
普通标签又分为控制标签和数据标签
控制标签用于完成条件逻辑和循环逻辑的控制,也可以做集合的操作。
数据标签用于输出后台的数据和完成其他数据的访问功能。
UI标签又分为表单标签,非表单标签和Ajax标签。
表单标签用于生成HTML页面中的表单元素
非表单标签主要用于生成非表单的可视化元素,如输出Action中封装的数据。
Ajax标签主要用于提供对Ajax的支持。
2.Struts2标签的使用
1.<s:if>
2.<s:elseif>
3.<s:else>
4.<interator>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<table border="1">
<s:iterator var="name" value="{'apple','orange','pear','banana'}"
status="st">
<s:if test="#st.odd">
<tr style="background-color: red;">
<td><s:property value="name" /></td>
</tr>
</s:if>
<s:else>
<tr style="background-color: grey;">
<td><s:property value="name" /></td>
</s:else>
</s:iterator>
</table>
</body>
</html>
<s:iterator>标签里面指定了status的值为st,然后用st.odd来返回当前遍历的元素的索引是否为奇数
2.Struts2的数据标签
<s:property>
用于输出指定的值,通常输出的是value属性指定的值,有以下属性
1.value 可选属性,指定需要输出的值,如果没有,默认输出栈顶元素
2.id 可选 该元素的标识
3.default 可选 ,如果要输出的属性值为null,则显示default的默认属性
4.escape 可选属性,指定是否忽略HTML代码。默认是true,忽略HTML代码。
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:property value="'this is caizhen'"/>
<s:property value="" default="6666"/>
<s:property value="'<h1>www.baidu.com<h1>'" escape="false"/>
<s:property value="'<h1>www.baidu.com'"/>
</body>
</html>
escape似乎不起作用。
<s:a>
<s:debug>
<s:include>
<s:param>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Struts标签</title>
</head>
<body>
<s:a href="http://www.baidu.com">百度</s:a>
<s:include value="test.jsp">
<s:param name="color">red</s:param>
</s:include>
</body>
</html>
test.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<% out.print(request.getParameter("color")); %>
<% %>
</body>
</html>
Struts2标签的模板和主题
Struts2的UI标签都是基于模板和主题的。
Struts2提供了四种主题
1.simple 生成基本的HTML元素
2.xhtml 对simple主题进行了扩展,提供了布局功能,Label显示名称以及与验证框架和国际化框架的集成
3.css_xhtml 该主题是对xhtml的扩展,在xhtml的基础上添加了对css支持和控制
4.Ajax 继承自xhtml,提供Ajax的支持。
修改页面主题在strut.xml里面修改
<constant name="struts.ui.theme" value="simple"/>
Struts2的表单标签
用于向服务器提交用户输入的信息
<s:form>
<s:textfield>
<s:textarea>
<s:password>
<s:radio>
<s:reset>
<s:submit>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Struts标签</title>
</head>
<body>
<s:form action="login">
<s:textfield label="昵称" name="nickname" />
<s:textfield label="用户名" name="username" />
<s:password label="密码" name="password" />
<s:password label="确认密码" name="password2" />
<s:radio name="sex" label="性别" list="#{'0':'男','1':'女' }" value="0" />
<s:textarea label="个性签名" name="description" rows="3" cols="17" />
<s:checkboxlist labelposition="top" name="fruit" label="喜欢的水果"
list="{'苹果','橘子','香蕉'}" />
<s:checkboxlist list="#{'a':'羽毛球','b':'篮球','c':'足球'}" name="sport"
label="喜欢的运动" labelposition="top" listKey="key" value="value" />
<s:select name="city" list="#{'BJ':'北京','SH':'上海' }" label="请选择你想去的城市"
listKey="key" listValue="value">
<s:optgroup label="湖北" list="#{'WH':'武汉','XG':'孝感' }" listKey="key"
listValue="value" />
</s:select>
<s:file name="file" accept="text/*" label="上传文件"/>
<s:reset value="重置" />
<s:submit value="注册"></s:submit>
</s:form>
</body>
</html>
非表单标签
1.<s:actionmessage> 如果Action实例的getActionMessage()方法返回不为null,则该标签输出该方法返回的系列消息
2.<s:actionerror> 如果Action实例的getActionError()方法返回不为null,则该标签输出该方法返回的系列消息
3.<s:filederror> 如果Action实例存在表单域的类型转换错误和校验错误
this.addActionMessage(" str");
this.addActionError("666");
this.addFileldError("msg","8888");
<body>
<s:actionmessage>
<s:actionerror>
<s:fielderror>
<s:fielderror value="msg"> <!--有无value效果一样-->
,则该标签输出该方法返回的系列消息