一、通用标签库
1、判断标签
<s:if> <s:elseif> <s:else>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:set var="i" value="3" scope="request"></s:set>
<s:if test="#request.i>3">
i 大于 3
</s:if>
<s:elseif test="#request.i<3">
i 小于 3
</s:elseif>
<s:else>
i 等于 3
</s:else>
</body>
</html>
2、遍历标签
<s:iterator></s:iterator>
(1)list集合
<s:iterator var="i" value="{'aa','bb','cc'}">
<s:property value="#i"/>
</s:iterator>
(2)Map集合
<s:iterator var="entry" value="#{'aaa':'111','bbb':'222','ccc':'333' }">
<s:property value="#entry.key"/>--<s:property value="#entry.value"/>
</s:iterator>
(3)迭代标签iterator 循环遍历
<s:iterator var="i" begin="1" end="10" step="1">
<s:property value="#i"/>
</s:iterator>
每到第三数字就变为红色 status在context当中
<!-- step="5"设置每次加5 -->
<s:iterator var="i" begin="100" end="300" step="5" status="status">
<!-- 每到第三数字就变为红色 status在context当中 -->
<s:if test="#status.count % 3 == 0">
<font color="red"><s:property value="#i"/></font>
</s:if>
<s:else>
<s:property value="#i"/>
</s:else>
</s:iterator>
页面效果
(4)其他常用的标签
<s:property/>
<s:debug/>
<s:date/> 在页面上进行日期的格式化。
二、UI标签库(方便的进行数据的回显)
1、单选按钮的表单元素类型
传统:
性别:<input type="radio" name="sex" value="男"/>男
<input type="radio" name="sex" value="女"/>女
Struts2 UI标签
<s:radio list="{'男','女'}" name="sex" label="性别"></s:radio>
效果
2、下拉列表
传统的下拉列表
籍贯:<select name="city">
<option value="">-请选择-<option>
<option value="北京">-北京-<option>
<option value="上海">-上海-<option>
<option value="深圳">-深圳-<option>
<option value="南京">-南京-<option>
</select>
Struts2 UI标签
<s:select list="{'北京','上海','深圳','南京'}" name="city" label="籍贯" headerKey="" headerValue="-请选择-"></s:select>
3、多选按钮的表单元素类型
传统的
爱好:<input type="checkbox" name="hobby" value="basketball">篮球
<input type="checkbox" name="hobby" value="football">足球
<input type="checkbox" name="hobby" value="volleyball">排球
<input type="checkbox" name="hobby" value="pingpang">乒乓球<br/>
Struts2 UI标签
<s:checkboxlist list="#{'basketball':'篮球','football':'足球','volleyball':'排球','pingpang':'乒乓球'}" name="hobby" label="爱好"></s:checkboxlist>
4、多行文本输入框
传统的
介绍:<textarea name="info" rows="2" cols="8">默认值</textarea>
Struts2 UI标签
<s:textarea name="info" rows="2" cols="8" label="介绍" value="默认值"></s:textarea>
5、隐藏字段
传统的
<input type="hidden" name="id"/>
Struts2 UI标签
<s:hidden name="id" value=""></s:hidden>
6、表单和提交
传统的
<form action="" method="post">
<input type="submit" value="提交"/>
</form>
Struts2 UI标签
<s:form action="" method="post">
<s:submit value="提交"></s:submit>
</s:form>
三、 传统表单和UI标签的表单提交数据的区别和使用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>UI标签</h1>
<h3>传统的表单</h3>
<form action="${pageContext.request.contextPath }/uiAction.action" method="post">
<input type="hidden" name="id"/>
用户名:<input type="text" name="name" /><br/>
密码:<input type="password" name="password"/><br/>
年龄:<input type="text" name="age"/><br/>
性别:<input type="radio" name="sex" value="男"/>男
<input type="radio" name="sex" value="女"/>女
<br/>
籍贯:<select name="city">
<option value="">-请选择-<option>
<option value="北京">-北京-<option>
<option value="上海">-上海-<option>
<option value="深圳">-深圳-<option>
<option value="南京">-南京-<option>
</select><br/>
爱好:<input type="checkbox" name="hobby" value="basketball">篮球
<input type="checkbox" name="hobby" value="football">足球
<input type="checkbox" name="hobby" value="volleyball">排球
<input type="checkbox" name="hobby" value="pingpang">乒乓球<br/>
介绍:<textarea name="info" rows="2" cols="8"></textarea>
<input type="submit" value="提交"/>
</form>
<h3>UI标签的表单:使用默认样式</h3>
<s:form action="uiAction" namespace="/" method="post">
<s:hidden name="id" value=""></s:hidden>
<s:textfield name="name" label="用户名"></s:textfield>
<!-- showPassword="true" 设置密码回显 -->
<s:password name="password" label="密码" showPassword="true"></s:password>
<s:textfield name="age" label="年龄"></s:textfield>
<s:radio list="{'男','女'}" name="sex" label="性别"></s:radio>
<s:select list="{'北京','上海','深圳','南京'}" name="city" label="籍贯" headerKey="" headerValue="-请选择-"></s:select>
<s:checkboxlist list="#{'basketball':'篮球','football':'足球','volleyball':'排球','pingpang':'乒乓球'}" name="hobby" label="爱好"></s:checkboxlist>
<s:textarea name="info" rows="2" cols="8" label="介绍" value=""></s:textarea>
<s:submit value="提交"></s:submit>
</s:form>
<h3>UI标签的表单 theme="simple" 设置不使用默认样式</h3>
<s:form action="" method="post" theme="simple">
<s:textfield name="name" label="用户名"></s:textfield>
<s:password name="password" label="密码"></s:password>
</s:form>
</body>
</html>
测试类UIAction
package com.itzheng.web.action;
import com.opensymphony.xwork2.ActionSupport;
public class UIAction extends ActionSupport {
private String name;
private String password;
private Integer age;
private String sex;
private String city;
private String[] hobby;
private String info;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return NONE;
}
}
UI表单提交的数据,当数据发送错误会回显原本的数据
值栈当中有数据,对应的数据
UI标签当中name的属性和值栈当中属性一致,就会自动回显内容