Struts2常用标签

控制标签

1.if elseif  else 标签控制流程,类似于 if else ,这一点比 jstl 稍微好些,因为 jstl 没有else标签

	<s:if test="#parameters.id[0]==1">
		id=1
	</s:if>
	<s:elseif test="#parameters.id[0]==2">
		id=2
	</s:elseif>
	<s:else>
		id!=1&id!=2
	</s:else>
2.iterator标签
		价格大于18元的杂志共有 <struts:property value="magazineList.{?#this.price>18}.size()" /> 本,分别是:<br/>
		<struts:iterator value="magazineList.{?#this.price>18}">
			<struts:property value="name" /> - ¥<struts:property value="price" />. <br/>
		</struts:iterator>

3.subset标签

可以过滤掉集合里的元素。

SubSetAction.java

public class SubSetAction extends ActionSupport {
	private Decider decider=new SubsetIteratorFilter.Decider() {
		//返回true选中,返回false被过滤掉
		public boolean decide(Object element) throws Exception {
			if(element instanceof java.lang.String){
				if("other".equals(element))
					return false;
				return true;				
			}
			return true;
		}
	};
	public Decider getDecider() {
		return decider;
	}
	public void setDecider(Decider decider) {
		this.decider = decider;
	}
	public List<String> getStudents() {
		return students;
	}
	public void setStudents(List<String> students) {
		this.students = students;
	}
	private List<String>students=new ArrayList<String>();
	@Override
	public String execute() throws Exception {
		students.add("大婶");
		students.add("大神");
		students.add("other");
		return SUCCESS;
	}
}
index.jsp
    <fmt:requestEncoding value="UTF-8"/>
	<s:subset source="students" decider="decider">
		<s:iterator>
			<s:property/>
		</s:iterator>
	</s:subset>
struts.xml

		<action name="subset" class="com.haowan.SubSetAction">
			<result>index.jsp</result>
		</action>

数据标签

1.action标签包含action页面

<s:action name="login" executeResult="true" ignoreContextParams="false"/>

执行这个页面,相当于发送了 login 这个 action ,并把数据显示在原来的页面中。

2.bean标签引用 javabean , <s:param>标签调用了setter方法,<s:property>调用了getter方法。

<s:bean name="com.bean.User"  id="user">

  <s:param name="name" value="%{'mary'}" />

  <s:property value="name" />

</s:bean>

注:param 也可以是  <s:param name="name" value="'mary'" />   或 <s:param name="name">mary2</s:param>

高级点的用法  <s:property value="#id.property"/> 可以通过 getter 方法调用任意 javabean 的属性

Magazine.java 省略了getter/setter方法

package com.javabean;
public class Magazine {
	private String name;
	private double price;
	private String info="我只是一个简单Magazine";}
index.jsp
	<s:bean name="com.javabean.Magazine"  id="user1">
	  <s:param name="name">mary1</s:param>
	  <s:property value="name" />
	</s:bean>
	<s:bean name="com.javabean.Magazine"  id="user2">
	  <s:param name="name">mary2</s:param>
	  <s:property value="#user1.name" />
	</s:bean>	
	<s:bean name="com.javabean.Magazine"  id="user3">
	  <s:param name="name">mary3</s:param>
	  <s:property value="#user1.info" />
	</s:bean>
结果: mary1 mary1 我只是一个简单Magazine

3.date标签输出日期

	<s:bean name="java.util.Date" id="date"></s:bean>
	<s:date name="date" format="yyyy年MM月dd日"/>

表单标签

1.autocomplete 可以自动完成功能的下拉框,能根据所填的内容筛选下拉框的内容。

autocompleteAjaxTag.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="struts"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

<struts:head theme="ajax" />

<style type="text/css">
body,td {
	font-size: 12px;
}
</style>
</head>

<body>


<s:url id="dataUrl" value="/autocompleteAjaxData.jsp" />

请选择国家:
<struts:autocompleter name="country" theme="ajax" href="%{dataUrl}"
	loadOnTextChange="true" loadMinimumCount="1" autoComplete="false"
	showDownArrow="true" indicator="indicator"  />
	<img id="indicator" src="images/loading.gif" />
</body>
</html>
autocompleteAjaxData.jsp

<%@page import="org.apache.commons.logging.LogFactory"%>
<%@page import="org.apache.commons.logging.Log"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%!Log log = LogFactory.getLog(getClass());%>
<%
	out.clear();

	request.setCharacterEncoding("UTF-8");

	response.setHeader("Pragma", "no-cache");
	response.setHeader("Cache-Control", "no-cache");
	response.setDateHeader("Expires", 0);

	String[] countries = { "Afghanistan", "Aland Islands", "Albania",
			"Algeria", "American Samoa (USA)", "Andorra", "Angola",
			"Anguilla", "Antarctica", "Antigua and Barbuda",
			"Argentina", "Armenia", "Aruba", "Australia", "Austria",
			"Azerbaijan", "Bahamas", "Bahrain", "Bangladesh",
			"Barbados", "Belarus", "Belgium", "Belize", "Benin",
			"Bermuda", "Bhutan", "Bolivia", "Bosnia and Herzegovina",
			"Botswana", "Bouvet Island", "Brazil",
			"British Indian Ocean Territory (UK)", "Brunei Darussalem",
			"Bulgaria", "Burkina Faso", "Burundi", "Cambodia",
			"Cameroon", "Canada", "Cape Verde", "Cayman Islands (UK)",
			"Central African Republic", "Chad", "Chile", "China",
			"China (Hong Kong S.A.R.)", "China (Macau S.A.R.)",
			"Christmas Island", "Cocos (Keeling) Islands", "Colombia",
			"Comoros", "Congo",
			"Congo, The Democratic Republic of the (formerly Zaire)",
			"Cook Islands", "Costa Rica", "Croatia", "Cyprus",
			"Czech Republic", "Côte d'Ivoire (Ivory Coast)", "Denmark",
			"Djibouti", "Dominica", "Dominican Republic", "Ecuador",
			"Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
			"Estonia", "Ethiopia", "Falkland Islands (Malvinas) (UK)",
			"Faroe Islands (Denmark)", "Fiji", "Finland", "France",
			"French Guiana", "French Polynesia",
			"French Southern Territories", "Gabon", "Gambia",
			"Georgia", "Germany", "Ghana", "Gibraltar (UK)", "Greece",
			"Greenland (Denmark)", "Grenada", "Guadeloupe (France)",
			"Guam (USA)", "Guatemala", "Guinea", "Guinea-Bissau",
			"Guyana", "Haiti",
			"Heard and McDonald Islands (Australia)",
			"Holy See (Vatican City State)", "Honduras", "Hungary",
			"Iceland", "India", "Indonesia", "Iraq", "Ireland",
			"Israel", "Italy", "Jamaica", "Japan", "Jordan",
			"Kazakhstan", "Kenya", "Kiribati",
			"Korea, Republic of (South Korea)", "Kuwait", "Kyrgyzstan",
			"Lao People's Democratic Republic (Laos)", "Latvia",
			"Lebanon", "Lesotho", "Liberia", "Libyan Arab Jamahiriya",
			"Liechtenstein", "Lithuania", "Luxembourg",
			"Macedonia, The former Yugoslav Republic of", "Madagascar",
			"Malawi", "Malaysia", "Maldives", "Mali", "Malta",
			"Marshall Islands", "Martinique (France)", "Mauritania",
			"Mauritius", "Mayotte (France)", "Mexico",
			"Micronesia, Federated States of", "Moldova, Republic of",
			"Monaco", "Mongolia", "Montenegro", "Montserrat (UK)",
			"Morocco", "Mozambique", "Myanmar (was Burma)", "Namibia",
			"Nauru", "Nepal", "Netherlands", "Netherlands Antilles",
			"New Caledonia", "New Zealand", "Nicaragua", "Niger",
			"Nigeria", "Niue", "Norfolk Island (Australia)",
			"Northern Mariana Islands (USA)", "Norway", "Oman",
			"Pakistan", "Palau (USA)",
			"Palestinian Territory, Occupied", "Panama",
			"Papua New Guinea", "Paraguay", "Peru", "Philippines",
			"Pitcairn (UK)", "Poland", "Portugal", "Puerto Rico (USA)",
			"Qatar", "Romania", "Russian Federation (Russia)",
			"Rwanda", "Réunion (France)", "Saint Helena (UK)",
			"Saint Kitts and Nevis", "Saint Lucia",
			"Saint Pierre and Miquelon (France)",
			"Saint Vincent and the Grenadines", "Samoa", "San Marino",
			"Sao Tome and Principe", "Saudi Arabia", "Senegal",
			"Serbia", "Seychelles", "Sierra Leone", "Singapore",
			"Slovakia", "Slovenia", "Solomon Islands", "Somalia",
			"South Africa",
			"South Georgia and the South Sandwich Islands", "Spain",
			"Sri Lanka", "Suriname", "Svalbard and Jan Mayen (Norway)",
			"Swaziland", "Sweden", "Switzerland", "Taiwan",
			"Tajikistan", "Tanzania, United Republic of", "Thailand",
			"Timor-Leste", "Togo", "Tokelau (New Zealand)", "Tonga",
			"Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan",
			"Turks and Caicos Islands (UK)", "Tuvalu", "Uganda",
			"Ukraine", "United Arab Emirates", "United Kingdom",
			"United States", "United States Minor Outlying Islands",
			"Uruguay", "Uzbekistan", "Vanuatu", "Venezuela", "Vietnam",
			"Virgin Islands, British", "Virgin Islands, U.S.",
			"Wallis and Futuna", "Western Sahara", "Yemen", "Zambia",
			"Zimbabwe", };

	String country = request.getParameter("country");

	if (country == null)
		country = "";

	StringBuffer buffer = new StringBuffer();

	for (int i = 0; i < countries.length; i++) {
		if (countries[i].toLowerCase()
			.startsWith(country.toLowerCase())) {
			if (buffer.length() != 0)
		buffer.append(",");
			buffer.append("['" + countries[i] + "']");
		}
	}
	
	Thread.sleep(500);

	out.print("[" + buffer + "]");

	log.info("queryString: " + request.getQueryString() + ", result: ["
			+ buffer + "]. ");
			
%>
基本模板是一致的,可以拿来直接用。

2.combobox 标签复合框
既可以自己选择编译,也可以选择下拉框中的内容。

<%
	List<String> favouriteList = new ArrayList<String>();

	favouriteList.add("苹果");
	favouriteList.add("橘子");
	favouriteList.add("梨");
	favouriteList.add("香蕉");

	request.setAttribute("favouriteList", favouriteList);
%>

<struts:form action="login">
	<struts:combobox list="#request.favouriteList" name="favourite" label="最喜欢的水果" />
</struts:form>
3.datetimepicker 标签日期选择器

<struts:form action="login">
	<struts:datetimepicker name="date" displayFormat="yyyy-MM-dd" label="请选择日期" />
</struts:form>
4.doubleselect标签联动选择框

<%
	List<String> provinceList = new ArrayList<String>();
	provinceList.add("北京");
	provinceList.add("山东");

	request.setAttribute("provinceList", provinceList);
	
	Map<String, List<String>> cityMap = new HashMap<String, List<String>>();
	
	{
		// 北京市
		List<String> cityList = new ArrayList<String>();
		
		cityList.add("东城区");
		cityList.add("西城区");
		cityList.add("海淀区");
		cityList.add("朝阳区");
		
		cityMap.put("北京", cityList);
	}
	{
		// 山东省
		List<String> cityList = new ArrayList<String>();
		
		cityList.add("青岛");
		cityList.add("济南");
		cityList.add("潍坊");
		cityList.add("烟台");
		cityList.add("淄博");
		
		cityMap.put("山东", cityList);
	}
	
	request.setAttribute("cityMap", cityMap);
%>

<struts:form action="login">
	<struts:doubleselect name="province" list="#request.provinceList"
		doubleName="city" doubleList="#request.cityMap.get(top)" label="请选择省份、市"/>
</struts:form>

非表单 UI 标签

1.<struts:debug/> 可以显示大量的信息。
2.div等标签实现无刷新获取数据

sx:div标签若是delay表示延迟加载,若用updateFreq则为定时局部刷新。

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%@ taglib uri="/struts-dojo-tags"  prefix="sx"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>  
    <!-- 下面的头信息不可或缺,否则程序会报错! -->  
    <!-- 不加下面的头信息,错误信息为:ReferenceError: djConfig is not defined -->  
    <s:head/>  
    <sx:head parseContent="true"/>  
    <!-- 上面的头信息不可或缺,否则程序会报错! -->  
    <base href="<%=basePath%>">  
    <title>My JSP 'index.jsp' starting page</title>  
  </head>  
  <body>  
  下面有显示内容:
    <s:url id="te" value="divAction"></s:url>  
    <sx:div href="%{te}" delay="3000">  
        <div align="center">  
            <p>此处内容即将显示</p>  
        </div>  
    </sx:div>  
    
  </body>  
</html>
struts.xml

		<action name="divAction" class="com.haowan.DivNewsAction">
			<result>/success.jsp</result>			
		</action>

DivNewsAction.java

public class DivNewsAction extends ActionSupport {

	private static String[] ALL_NEWS = { "中国举办奥运会",
			"鸟巢竣工", "嫦娥探月卫星", "神舟六号顺利返航",
			"A股超跌反弹"};

	private String key;

	private List<String> news = new ArrayList<String>();

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
	}

	public String execute() {
		if (key == null)
			key = "";

		for (String n : ALL_NEWS) {
			if (n.contains(key)) {
				news.add(n);
			}
		}
		return SUCCESS;
	}

	public List<String> getNews() {
		return news;
	}

	public void setNews(List<String> news) {
		this.news = news;
	}

}

success.jsp

       <s:iterator value="news">  
            <s:property/>
       </s:iterator>  

若是想要筛选显示内容,则需要在index.jsp中做一点修改,把参数key=中  传递过去,便只显示含“中”的新闻。

    <s:url id="te" value="divAction">
    	<s:param name="key">中</s:param>
    </s:url>  





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值