Java Struts2 OGNL標籤庫之append拼接、merge拼接、subset篩選和sort排序

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);
	}

}

結果如下:


發佈了54 篇原創文章 · 獲贊 21 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章