Struts2的表單標籤可分爲兩種:Form表單本身和單個表單元素的標籤。所有表單標籤處理類都繼承了UIBean類,UIBean包含了一些通用屬性,分爲3種。(1)模板相關屬性、(2)JS相關屬性、(3)通用屬性。
如:註冊表單例子
myform.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML>
<html>
<head>
<title>Regist - Document</title>
<meta charset="utf-8">
</head>
<body>
<s:form action="regist" methor="get">
用戶名:<s:textfield name="user.name" label="用戶名" cssClass="zyinput"></s:textfield>
密碼:<s:password name="user.pass" label="密碼"></s:password>
性別:<s:radio list="#{1:'男',0:'女'}" name="user.sex"></s:radio>
愛好:<s:checkboxlist list="#{'1':'籃球','2':'足球','3':'棒球'}" name="user.hoppy"></s:checkboxlist>
地區:<s:select list="#{'sd':'山東省','bj':'北京市','gd':'廣東省'}" name="user.prov"></s:select>
備註:<s:textfield name="user.memo"></s:textfield>
<s:submit value="submit"></s:submit>
<s:reset value="reset"></s:reset>
</s:form>
</body>
</html>
control.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML>
<html>
<head>
<title>struts2標籤庫</title>
<meta chartset='utf-8'>
</head>
<body>
<s:if test="user.sex==0">女</s:if>
<s:elseif test="user.sex==1">男</s:elseif>
<s:else>無性別</s:else>
<s:iterator value="list">
<s:property value="name"/>
</s:iterator>
<s:property value="list[0].name"/>
<h3>append拼接結合List</h3>
<s:append id="zy">
<s:param value="{'山東','上海','廣東','北京','天津'}"></s:param>
<s:param value="{'蘋果','香蕉','橙子','雪梨','葡萄'}"></s:param>
</s:append>
<s:iterator value="#zy" var="y"><s:property/></s:iterator>
<h3>append拼接結合Map</h3>
<s:append id="zs">
<s:param value="#{'1':'山東','2':'上海','3':'廣東','4':'北京','5':'天津'}"></s:param>
<s:param value="#{'6':'蘋果','7':'香蕉','8':'橙子','9':'雪梨','10':'葡萄'}"></s:param>
</s:append>
<s:iterator value="#zs" var="s">
<s:property value="#s.key"/><s:property value="#s.value"/>
</s:iterator>
<h3>merge拼接結合List</h3>
<s:merge id="mer">
<s:param value="{'山東','上海','廣東','北京','天津'}"></s:param>
<s:param value="{'蘋果','香蕉','橙子','雪梨','葡萄'}"></s:param>
</s:merge>
<s:iterator value="#mer" var="m"><s:property value="#m"/></s:iterator>
<h3>Subset根據篩選器選擇集合中的元素,篩選包含s的字符串</h3>
<s:bean name="top.k10000.ContainSDecider" id="testDec"></s:bean>
<s:subset id="sub" source="{'s1','s2','struts','ajax','java','php'}" count="5" decider="#testDec">
<s:iterator> <s:property/> </s:iterator>
</s:subset>
<h3>Sort排序</h3>
<s:set name="frank" value="{'s1','s2','struts','ajax','java','php'}" />
<s:bean id="sort" name="top.k10000.TestComparator"></s:bean>
<s:sort source="frank" comparator="sort">
<s:iterator> <s:property /> </s:iterator>
</s:sort>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.ui.theme" value="simple"></constant><!-- 設置爲不加入table標籤 -->
<package name="mypackage" extends="struts-default">
<action name="regist" class="top.k10000.RegistAction">
<result name="success">/control.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>myform.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></web-app>
User.java
package top.k10000;
public class User {
private String name;
private String pass;
private String sex;
private String hoppy;
private String prov;
private String memo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getHoppy() {
return hoppy;
}
public void setHoppy(String hoppy) {
this.hoppy = hoppy;
}
public String getProv() {
return prov;
}
public void setProv(String prov) {
this.prov = prov;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}
RegistAction.java
package top.k10000;
import java.util.ArrayList;
import java.util.List;
import top.k10000.User;
import com.opensymphony.xwork2.ActionSupport;
public class RegistAction extends ActionSupport{
private User user;
private List<User> list = new ArrayList();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
public String execute()throws Exception{
User u1 = new User();
u1.setName("s1");
User u2 = new User();
u2.setName("s2");
User u3 = new User();
u3.setName("s3");
User u4 = new User();
u4.setName("s4");
User u5 = new User();
u5.setName("s5");
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
list.add(u5);
return "success";
}
}
ContainSDecider.java
package top.k10000;
import org.apache.struts2.util.SubsetIteratorFilter.Decider;
public class ContainSDecider implements Decider{
@Override
public boolean decide(Object element) throws Exception {
String str = (String)element;
return str.contains("s");
}
}
TestComparator.java
package top.k10000;
import java.util.Comparator;
public class TestComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
String s1 = (String)o1;
String s2 = (String)o2;
return s1.compareTo(s2);
}
}
結果如下: