Struts2之控制标签

Struts2的控制标签,主要用于完成流程控制,以及对ValueStack中的控制,控制标签可以完成输出流程的控制,例如循环、分支等操作,也可以完成对集合的合并、排序等操作。

1.常用的控制标签有:if、elseif、else、iterator、append、merge、generator、subset、sort等。

下面分别对这些控制标签进行介绍,并介绍如何使用这些控制标签:


(1).if、elseif、else标签:if标签用来控制基本的条件处理流程,通常和else标签或者elseif标签连用。

其参数、属性为:

名字是否必须默认值可否使用表达式类型描述

id


 


String

用来表示该元素,对于UI和Form标签来说直接转变为HTML id属性

test


 


Boolean用来决定是否显示标签内部内容的表达式

示例:首先,新建一个Struts2项目,项目名为BiaoQian,在项目里头新建一个if.jsp文件,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
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>
    <base href="<%=basePath%>">
    
    <title>My JSP 'if.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">
	-->

  </head>
  
  <body>
    <s:if test="%{false}">
    	我是if控制标签!
    </s:if>
    <s:elseif test="%{true}">
    	我是elseif控制标签!
    </s:elseif>
    <s:else>
    	我是else控制标签!
    </s:else>
  </body>
</html>

把项目部署到Tomcat服务器上,开启Tomcat服务器,运行后效果 如下:


示例解析:这个例子是通过if、elseif、else控制标签连用的,跟Java语法下的if、else if、else是十分相似的,上面这个例子中,使用if控制标签的test属性来判断是否为true,为true的话就执行if控制标签的内容,为false的话就去判断elseif控制标签的test属性,为true的话就执行elseif控制标签的内容,为false的话就去直接去执行else控制标签里的内容了,这里明显为true,所以显示的就为elseif控制标签里的内容了!

注:大家可以改下test的属性值,自己试下,这里就简单介绍了!





(2).iterator标签:用于迭代一个集合,可以是Collection,Map,Enumeration,Iterator,array。迭代过程会把每一个对象暂时压入值栈,这样标签的内部就可以直接访问对象的属性和方法,标签完毕后,值栈内容被删除。

其参数,属性为:

名字是否必须默认值可否使用表达式类型描述

id




String

Id,用来表示该元素

status




Boolean

如果指定,在循环的过程中会保留一个IteratorStatus类型的变量,该变量用来查询当前迭代的状态

value


 


String

被迭代的对象

IteratorStatus实例包含以下几个方法:

int getConut() 返回当前迭代了几个元素。

int geIndex() 返回当前元素的索引。

boolean isEven() 返回当前迭代的索引是否是偶数。

boolean isOdd() 返回当前迭代的索引是否是奇数。

boolean isFirst() 返回当前迭代的索引是否是第一个元素。

boolean isLast() 返回当前迭代的索引是否是最后一个元素。


示例:在上面那个BiaoQian的项目底下,新建一个iterator.jsp文件,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
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>
    <base href="<%=basePath%>">
    
    <title>My JSP 'iterator.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">
	-->

  </head>
  
  <body>
    <table border="1" width="100">
    	<s:iterator value="{'端午节','中秋节','七夕节','重阳节'}" id="name" status="st">
    		<tr <s:if test="#st.odd">style="background-color: #FFCCFF"</s:if>>
    			<td><s:property value="#st.count"/>
    				<s:property value="name"/>
    			</td>
    		</tr>
    	</s:iterator>
    </table>
    <s:debug></s:debug>
  </body>
</html>

运行效果如下:

 


示例解析:iterator.jsp页面中我们使用iterator控制标签来迭代一个集合,该标签的value值即为我们所迭代的集合,该标签的id指定为name,可供下面的其它标签引用,指定了status为st,使得在循环的过程中会保留一个IteratorStatus类型的变量,该变量用来查询当前迭代的状态,然后又用了一个if控制标签,if标签的test值为#st.odd,因为我们使用了iterator标签来迭代,把这个IteratorStatus类型的变量st放在了值栈里头,就使用#st.odd来指定if标签的test属性,odd又是IteratorStatus的方法,返回当前迭代的集合的索引是否是奇数,即如果迭代的集合中的索引为奇数的话,就把迭代到的索引对应的内容样式的背景颜色改为粉红色,使用<s:property value="#st.count"/>来获取当前迭代了几个元素,使用<s:property value="name"/>来获取到上面指定的iterator标签的集合,是通过iterator标签的id属性值来获得的。

注:大家可以根据需要改相应的代码!


这里在扩展一下,有些同学喜欢把一些集合的内容写成单个字母,比如我有个同学经常把项目名,类名全部定义为单个字母,我说他不规范,他一直不改,但是他挺厉害的,我们省蓝桥杯一等奖获得者(班上的学霸,心目中的大牛),这里不废话了,这个问题就是我这个好同学犯的,为了避免大家会出现这个错误,就扩展一下,其实看报错信息就可以知道如何解决了:

我们把上述iterator.jsp文件的主要代码改为下面所示,这里只附上body标记后的代码:

 <body>
    <table border="1" width="100">
    	<s:iterator value="{'a','b','c','d','e','f','g'}" id="name" status="st">
    		<tr <s:if test="#st.odd">style="background-color: #FFCCFF"</s:if>>
    			<td><s:property value="#st.count"/>
    				<s:property value="name"/>
    			</td>
    		</tr>
    	</s:iterator>
    </table>
    <s:debug></s:debug>
  </body>

然后我们再运行一次,发现界面报错,如下图所示:

在31行出错,其实我们还看漏了:


在控制台下也报错了,跟上面报错的信息差不多,这是什么错误呢?java.lang.classCastException异常,提示信息是这个异常,详细信息为java.lang.Character类型不能转换成java.lang.String类型,即字符类型不能转换为String类型,所以报这错,原因是你在迭代的集合value值里赋给的是  'a','b','c'等等的字母,会把这些字母看成一系列的字符,所以不能转换为String类型,你可以多加一个字母,即不要单个字母,这样系统就不会把多个字母把它识别为字符,而把它识别为字符串类型,修改后如下图所示:





(3).append标签:用于将多个集合对象拼接起来,组成一个新的集合,通过这种拼接,从而允许通过一个<s:iterator/>标签就完成多个集合的迭代。

在append标签内部,使用param标签指定集合。通常和iterator标签一起使用!

其参数,属性为

 名字是否必须默认值可否使用表达式类型描述

id




String

用来保存结果,iterator的对象在valuecontext中的名字

append标签指定一个id属性,如果指定了该属性,那么组合后的迭代器将保存到OgnlContext中,可以通过该属性的值来引用组合后的迭代器。


示例:在那个BiaoQian项目里,新建一个append.jsp文件,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'append.jsp' starting page</title>
</head>

<body>
	<table border="1" width="200">
		<s:append id="newList">
			<s:param
				value="{'I love java','I love java web','I love android','I love linux'}" />
			<s:param value="{'I love my father','I love my mother'}" />
		</s:append>
		<s:iterator value="#newList" status="st">
			<tr <s:if test="#st.even">style="background-color: #FFCC55"</s:if>>
				<td><s:property value="#st.count" /> <s:property />
				</td>
			</tr>
		</s:iterator>
	</table>
	
</body>
</html> 

运行效果如下:
 


再附上一个例子,是从action中接收数据,然后使用append标签拼接,其中通过iterator标签迭代从action类中的数据,首先,新建一个AppendIteratorTagAction类,代码如下:
package com.gk;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

public class AppendIteratorTagAction extends ActionSupport {
	private List myList1;
	private List myList2;
	private List myList3;

	public List getMyList1() {
		return myList1;
	}

	public void setMyList1(List myList1) {
		this.myList1 = myList1;
	}

	public List getMyList2() {
		return myList2;
	}

	public void setMyList2(List myList2) {
		this.myList2 = myList2;
	}

	public List getMyList3() {
		return myList3;
	}

	public void setMyList3(List myList3) {
		this.myList3 = myList3;
	}
	
	public String execute(){
		myList1=new ArrayList();
		myList1.add("xg");
		myList1.add("Lc");
		
		myList2=new ArrayList();
		myList2.add("Hello");
		myList2.add("World");
		
		myList3=new ArrayList();
		myList3.add("HeHe");
		myList3.add("HaHa");
		
		return "done";
	}

}
然后再配置struts.xml配置文件,配置AppendIteratorTagAction这个action,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
	<constant name="struts.devMode" value="true"></constant>
	
	<package name="append" namespace="/" extends="struts-default">
		<action name="append" class="com.gk.AppendIteratorTagAction">
			<result name="done">/index.jsp</result>
		</action>
	</package>
</struts>

 最后再打开index.jsp文件,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
	<s:append id="myAppendIterator">
		<s:param value="%{myList1}"/>
		<s:param value="%{myList2}"/>
		<s:param value="%{myList3}"/>
	</s:append>
	<s:iterator value="%{#myAppendIterator}">
		<s:property/>
	</s:iterator>
  </body>
</html>

运行效果如下:





(4).merge标签:与append标签十分类似,它们都是将多个集合拼接成一起,它们的区别在于拼接后集合元素顺序的不同。

假设有两个集合的话,区别如下:

append方式拼接,新元素的顺序为:
(1).第一个集合中的第一个元素;
(2).第一个集合中的第二个元素;
(3).第二个集合中的第一个元素;
(4).第二个集合中的第二个元素;

merge方式拼接,新元素的顺序为:
(1).第一个集合中的第一个元素;
(2).第二个集合中的第一个元素;
(3).第一个集合中的第一个元素;
(4).第二个集合中的第二个元素;

我们在BiaoQian项目下新建一个merge.jsp文件,使用的action类还是为AppendIteratorTagAction,配置文件只需配置多一个action,这里,分别附上struts.xml文件和merge.jsp文件的代码:
struts.xml文件代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
	<constant name="struts.devMode" value="true"></constant>
	
	<package name="append" namespace="/" extends="struts-default">
		<action name="append" class="com.gk.AppendIteratorTagAction">
			<result name="done">/index.jsp</result>
		</action>
		<action name="merge" class="com.gk.AppendIteratorTagAction">
			<result name="done">/merge.jsp</result>
		</action>
	</package>
</struts>

merge.jsp文件代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
	<s:merge id="myMergeIterator">
		<s:param value="%{myList1}"/>
		<s:param value="%{myList2}"/>
		<s:param value="%{myList3}"/>
	</s:merge>
	<s:iterator value="%{#myMergeIterator}">
		<s:property/>
	</s:iterator>
  </body>
</html>
然后在地址栏输入 http://localhost:8083/BiaoQian/merge ,运行效果如下:

这时你就可以和append标签所运行的效果比较,就可以知道它们的不同了。






(5).generator标签:此标签可以将指定字符串按指定分隔符分割成多个字串。 生成的多个字串可以用iterator标签进行迭代输出。可以这么理解:generator标签将一个字符串转换成一个List集合。在该标签体内,整个临时生成的集合将放入ValueStack的顶端,但一旦该标签结束,生成的集合将被移除ValueStack。

generator标签有如下几个属性:

1.count属性:可选属性,指定生成集合中元素的总数。

2.val属性:必填属性,指定被解析的字符串。

3.separator属性:这是一个必填属性,指定用于分割字符串的分隔符。

4.converter属性:可选属性,指定一个转换器,转换器负责将生成的集合中的每个字符串转换成对象,通过这个转换器可以将一个含有分隔符的字符串解析成对象的集合。转换器必须是一个继承org.apache.struts.util.IteratorGenerator.Cobverter的对象。

5.var属性:可选属性。如果指定了该属性,则将生成的集合保存在Stack Context中。如果不指定该属性,则将生成的集合放入ValueStack的顶端,该标签一结束,生成的集合就被移除。该属性也可替换成id。

示例:在BiaoQian项目下新建一个generator.jsp文件,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'generator.jsp' starting page</title>
</head>

<body>
<table border="0">
	<!-- 使用generator标签将一个字符串 解析转换成一个集合-->
	<s:generator separator="*" val="'Java*Android*Struts2*Linux'">
		<!-- 在generator标签内,该集合位于ValueStack的栈顶。故此处迭代就是临时生成的集合 -->
		<s:iterator status="st">
		<!-- 根据当前迭代项索引的奇偶来决定是否使用css样式,这里是判断索引为奇数的就把背景颜色改为蓝色 -->
			<tr <s:if test="#st.odd">style="background-color: blue"</s:if>>
			<td><s:property/></td>
			</tr>
		</s:iterator>
	</s:generator>
	</table>
</body>
</html>

输入地址: http://localhost:8083/BiaoQian/generator.jsp 后,效果如下:

通过上面这个例子的代码可以看到,一个字符串Java*Android*Struts2*Linux通过*号分隔符将它分割了4个字串,并根据iterator迭代标签将分割后的内容显示出来,索引为奇数的就把背景变成蓝色。






(6).subset标签:用于取得集合的子集,该标签的底层通过:org.apache.struts2.util.SubsetIteratorFilte类提供实现。

其属性有:

1.count:可选属性,代表子集中的元素个数,如果没有指定代表源集合的全部元素。

2.source:可选属性,指定源集合,如果没有指定,代表的是ValueStack的栈顶集合。

3.start:可选属性,从第几元素开始截取。

4.decider:可选属性,指定由开发者自己决定是否选中该元素。注意事项:在subset标签内时,subset标签生成的子集位于ValueStack的栈顶,如果标签结束,该标签生成的子集将被移出ValueStack栈。

示例:首先,在BiaoQian项目下新建一个SubsetDecider类,实现Decider这个接口,代码如下:
package com.gk;

import org.apache.struts2.util.SubsetIteratorFilter.Decider;

public class SubsetDecider implements Decider {

	@Override
	public boolean decide(Object arg0) throws Exception {
		return arg0.toString().length()>4;
	}

}

再新建一个subset.jsp文件,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'subset.jsp' starting page</title>
</head>

<body>
	<s:bean var="myDecider" name="com.gk.SubsetDecider"/>
	没有设置decider属性:
	<br/>
	<s:subset source="{'Java','Android','Linux','C'}" start="2" count="4">
		<s:iterator>
			<s:property/>
		</s:iterator>
	</s:subset>
	<br/>
	设置decider属性:
	<br/>
	<s:subset source="{'Java','Android','Linux','C'}" decider="#myDecider">
		<s:iterator>
			<s:property/>
		</s:iterator>
	</s:subset>
	
</body>
</html>

在地址栏输入 http://localhost:8083/BiaoQian/subset.jsp 地址,运行效果如下:

示例解析:看subset.jsp文件的代码,其中<s:subset source="{'Java','Android','Linux','C'}" start="2" count="4">,这个代码是指从第二个元素开始截取并且没有指定decider属性,因为我的集合为'Java','Android','Linux','C',所以取到的为第二个元素之后的值。其中<s:subset source="{'Java','Android','Linux','C'}" decider="#myDecider">,这个代码是设置decider属性,所以就会调用那个bean标签所指定的类,即SubsetDecider类,那个类我们可以看到那个decider方法的返回值是对象的长度并且是大于4的,所以subset标签就会从集合里面找到长度大于4的集合元素,找到2个,所以吧Android,Linux显示出来了。






(7).sort标签:用于对指定集合元素进行排序,进行排序时,必须提供自己的排序规则,即实现自己的Comparator,自己的Comparator需要实现java.util.Comparator接口。

其属性有:

1.comparator:必填属性,指定进行排序的comparator的实例。

2.source:可选属性,指定排序的集合,如果没有指定,代表是ValueStack的栈顶集合。(注:在sort标签内时,subset标签生成的子集位于ValueStack的栈顶,如果标签结束,该标签生成的子集将被移出ValueStack栈。)

示例:在BiaoQian项目下,新建一个比较器类SortComparator,实现Comparator<String>的接口,代码如下:
<pre class="java" name="code">package com.gk;

import java.util.Comparator;

public class SortComparator implements Comparator<String> {

	@Override
	public int compare(String s1, String s2) {
		return s2.length()-s1.length();
}
 
再新建一个sort文件,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'sort.jsp' starting page</title>
  </head>
  
  <body>
  	<!-- 使用bean标签定义一个Comparator实例 -->
    <s:bean name="com.gk.SortComparator" id="sort"></s:bean>
    <table>
    	<!-- 使用自定义的排序规则对目标集合进行排序 -->
    	<s:sort source="{'aad','cccc','bc'}" comparator="#sort">
    	<!-- 迭代输出集合 -->
    	<s:iterator>
    		<tr><td><s:property/></td></tr>
    	</s:iterator>
    	</s:sort>
    </table>
  </body>
</html>

输入地址: http://localhost:8083/BiaoQian/sort.jsp ,运行效果如下:
示例解析,通过<s:sort source="{'aad','cccc','bc'}" comparator="#sort">这行代码,由属性source可知指定排序的集合是aad,cccc,bc,由comparator可知道指定排序的Comparator实例是由bean标签指定的SortComparator类,这个类通过两个长度的比较进行排序并且是返回值是第二个数的长度减去第一个数的长度,所以是从长度长的排下去。







2.对于控制标签,大家可以多写例子去理解它!以上内容仅供大家学习参考,写得不好,请见谅,如有错误,请指出,谢谢! 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-----超链接,类似于html里的<a></a> 3. <s:action name=""></s:action>-----执行一个view里面的一个action 4. <s:actionerror/>-----如果action的errors有值那么显示出来 5. <s:actionmessage/>-----如果action的message有值那么显示出来 6. <s:append></s:append>-----添加一个值到list,类似于list.add(); 7. <s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajax B: 1. <s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值 C: 1. <s:checkbox></s:checkbox>-----复选框 2. <s:checkboxlist list=""></s:checkboxlist>-----多选框 3. <s:combobox list=""></s:combobox>-----下拉框 4. <s:component></s:component>-----图像符号 D: 1. <s:date/>-----获取日期格式 2. <s:datetimepicker></s:datetimepicker>-----日期输入框 3. <s:debug></s:debug>-----显示错误信息 4. <s:div></s:div>-----表示一个块,类似于html的<div></div> 5. <s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框 E: 1. <s:if test=""></s:if> 2. <s:elseif test=""></s:elseif> 3. <s:else></s:else>-----这3个标签一起使用,表示条件判断 F: 1. <s:fielderror></s:fielderror>-----显示文件错误信息 2. <s:file></s:file>-----文件上传 3. <s:form action=""></s:form>-----获取相应form的值 G: 1. <s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用 H: 1. <s:head/>-----在<head></head>里使用,表示头文件结束 2. <s:hidden></s:hidden>-----隐藏值 I: 1. <s:i18n name=""></s:i18n>-----加载资源包到值堆栈 2. <s:include value=""></s:include>-----包含一个输出,servlet或jsp页面 3. <s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入 4. <s:iterator></s:iterator>-----用于遍历集合 L: 1. <s:label></s:label>-----只读的标签 M: 1. <s:merge></s:merge>-----合并遍历集合出来的值 O: 1. <s:optgroup></s:optgroup>-----获取标签组 2. <s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框 P: 1. <s:param></s:param>-----为其他标签提供参数 2. <s:password></s:password>-----密码输入框 3. <s:property/>-----得到'value'的属性 4. <s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性 R: 1. 2. <s:radio list=""></s:radio>-----单选按钮 3. <s:reset></s:reset>-----重置按钮 S: 1. <s:select list=""></s:select>-----单选框 2. <s:set name=""></s:set>-----赋予变量一个特定范围内的值 3. <s:sort comparator=""></s:sort>-----通过属性给list分类 4. <s:submit></s:submit>-----提交按钮 5. <s:subset></s:subset>-----为遍历集合输出子集 T: 1. <s:tabbedPanel id=""></s:tabbedPanel>-----表格框 2. <s:table></s:table>-----表格 3. <s:text name=""></s:text>-----I18n文本信息 4. <s:textarea></s:textarea>-----文本域输入框 5. <s:textfield></s:textfield>-----文本输入框 6. <s:token></s:token>-----拦截器 7. <s:tree></s:tree>-----树 8. <s:treenode label=""></s:treenode>-----树的结构 U: 1. <s:updownselect list=""></s:updownselect>-----多选择框 2. <s:url></s:url>-----创建url ___________________________________________________ struts2框架的标签库分为三类: 用户标签:生成HTML元素 非用户标签:数据访问、逻辑控制等。 AJAX标签:支持AJAX技术。 用户界面标签又分两类: 表单标签:生成HTML页面的from元素 非表单标签:生成页面上的Tab、Tree等 非界面标签又分为数据访问标签和流程控制标签控制标签: if/elseif/else标签控制流程分支。 iteratot标签:对集合属性迭代(属性类型:List、Map、数组)。 append标签:将多个集合对象拼接在一起,组成一个新的集合。将多个集合使用一个<iterator/>标签完成迭代。 generatot标签:将指定的字符串按照规定的分隔符分解成多个子字符串。 merge标签:将多个集合拼接在一起。 subset标签:获取某个集合的子集合。 sort标签:多指定的集合元素进行排序。 数据标签: action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。 bean:创建一个JavaBean实例。。 date:格式化输出一个日期属性。 debug:生成一个调试链接,当单击该链接时,可以看到当前栈值中的内容。 i18n:指定国际化资源文件的baseName。 include:包含其他的页面资源。 param:设置参数。 property:输出某个值。可以输出值栈、StackContext 、ActionContext中的值。 push:将某个值放入值栈。 set:设置一个新的变量。 text:输出国际化信息。 url:生成一个URL地址。 表单标签: checkbox标签:复选框。 checkboxlist标签:根据一个集合属性创建一系列的复选框。 combobox标签:生成一个单选文本框和一个下拉列表框的组合。 doubleselect标签:生成一个相互关联的列表框,该标签由两个下拉选择框组成。 datetimepicker标签:生成一个日期、时间下拉列表框。 head标签:生成HTML页面的HEAD部分。 file标签:在页面上生成一个上传文件元素。 hidder标签:生成一个不看见的用户输入元素。 select标签:生成下拉列表框。 optiontransferselect标签:创建两个选项以及转移下拉列表项,该标签生成两个下拉列表框,同时生成相应的按钮,这些按钮可以控制选项在两个下拉列表之间移动、排序。 radio标签:单选框。 optgroup标签:生成一个下拉列表框的选择组,下拉列表框中可以包含多个选择组。 token标签:防用户多次提交表单。 textarea标签:文本域。 updownselct标签:支持选项内容的上下移动。 password表单:密码表单域。 textfield标签:单行文本输入框。 非表单标签: actionerror标签:输出Action中getActionErrors()方法返回的异常信息。 actionmessage标签:输出Action中getActionErrors()方法返回的信息。 component标签:生成一个自定义的组件。 div标签:AJAX标签,生成一个div片段。 fielderror标签:输出异常提示信息。 tabbedPanel:AJAX标签,生成HTML中的Tab页。 tree标签:生成一个树形结构。 treenode标签:生成树形结构的节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值