`
Luob.
  • 浏览: 1589690 次
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2 常用标签使用(三十九)

 
阅读更多
1.append标签
使用append标签可以把多个集合对象连接起来,从而组成了一个新的集合,然后通过iterator标签进行迭代输出

id:定义连接后新集合的名字
param:子标签,每个子标签指定一个集合


2.merge标签
与append标签所实现的功能一样,也是将多个集合连接成一个新的集合,但是这两个标签连接生成的新集合中,元素的排列方式有所不同。


3.index.jsp
 <body>
  		<s:append id="newList_append">
  			<s:param value="{'集合1中的元素1','集合1中元素2','集合1中的元素3'}"/>
  			<s:param value="{'集合2中的元素1','集合2中的元素2','集合2中元素3'}"/>
  		</s:append>
  		<s:merge id="newList_merge">
  			<s:param value="{'集合1中的元素1','集合1中的元素2','集合1中的元素3'}"/>
  			<s:param value="{'集合2中的元素1','集合2中的元素2','集合2中的元素3'}"/>
  		</s:merge>
  		<h3 style="color:green">
  			迭代输出由append标签产生的新集合
  		</h3>
  		<s:iterator value="#newList_append" status="st">
  			<ul
 			<s:if test="#st.odd">style="color:blue;width:400px;height:20px;"</s:if>>
 			<li style="width: 400px; height: 20px;">
 				<s:property/>
 			</li>
  			</ul>
  		</s:iterator>
  		
  		<h3 style="color:green">
  			迭代输出由append标签产生的新集合
  		</h3>
  		<s:iterator value="#newList_merge" status="st">
  			<ul
 			<s:if test="#st.odd">style="color:blue;width:400px;height:20px;"</s:if>>
 			<li style="width: 400px; height: 20px;">
 				<s:property/>
 			</li>
  			</ul>
  		</s:iterator>
  </body>


4.访问
--http://localhost:8080/Struts2_Tags/index.jsp
可以看到 merge集合中的元素 是交叉的  类似  map
append中的集合是有序的  类似 list

5.generator标签
generator标签用于将指定的字符串解析成一个集合,解析时需要指定分隔符。
generator标签有如下属性:
id: 如果指定该属性,则生成一个集合放在 pageContext属性中。
count:该属性用来指定集合中最多生成的几个元素,多余内容将被忽略,如果不指定该属性,则默认元素个数是无限制的
separator:该属性用来指定解析字符串的分隔符。
val:该属性用来指定被解析的字符串
converter:该属性用来指定一个转换器,该转换器负责将集合中的每个字符串转换成对象。


generatorTag.jsp
<s:generator separator=";" val="'姓名:小气;性别:男;年龄:24;爱好:没有'" count="3">
			  		<!--由于这里只有一个集合  所以不用指定什么  -->
			  		<s:iterator>
			  			<s:property/><br/>
			  		</s:iterator>
  		</s:generator>



6.subset标签
subset:标签用于从一个集合中截取,从而产生一个新的集合, 使用该标签是可以知道一下几个属性:
source:可选属性 该属性用来指定源集合
count:可选属性,该属性用来指定自己和中元素的个数,如果不指定,则默认取得元集合中的额所有元素。
start:可选属性,该属性用来指定从源集合的第几个元素开始截取
decider:可选属性,该属性用来指定是否选中当前元素。

subsetTag.jsp
 <body>
  		<s:set name="myList" value="{'红楼梦','三国演义','水浒传','西游记'}"></s:set>
  		<s:subset source="myList" count="2" start="1" decider="西">
  			<s:iterator status="st">
  				<s:property value="#st.getIndex()"/>
  				<s:property/>
  			</s:iterator>
  		</s:subset>
  </body>

--使用 decidor 属性 筛选元素
package com.sh.action;

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

public class NewDecider implements Decider {

	public boolean decide(Object object) throws Exception {
		// TODO Auto-generated method stub
		String content=(String)object;
		if(content.contains("国")){
			return true;
		}else{
			return false;
		}
	}

}

--访问的结果为
0 三国演义 1 水浒传
subsetTag2.jsp
<body>
  		<s:set name="myList" value="{'红楼梦','三国演义','水浒传','西游记','大秦帝国','康熙大帝'}"></s:set>
  		<s:bean id="newDecider" name="com.sh.action.NewDecider"/>
  		<s:subset source="myList" decider="newDecider">
  			<s:iterator status="st">
  				<s:property value="#st.getIndex()"/>
  				<s:property/>
  			</s:iterator>
  		</s:subset>
  </body>

--访问的结果为
0 三国演义 1 大秦帝国

7.sort标签
sort:标签用来对指定的集合进行排序,但是排序规则要有开发者提供,即实现自己的compatator实例,Comparrator是通过实现java.util.comparator接口来实现
可以指定的属性为
compatator:必选属性,用来指定实现排序规则的Comparator实例
source:可选属性,用来指定将要排序的集合。

定义 排序规则NewComparator.java
package com.sh.action;

import java.util.Comparator;

public class NewComparator implements Comparator{

	public int compare(Object o1, Object o2) {
		int i=Integer.parseInt((String)o2)-Integer.parseInt((String)o1);
		return i;
	}
}

sortTag.jsp
 
  <body>
  		<s:set name="myList" value="{'2007','2010','2009','2011','2008','2012'}"></s:set>
  		<s:bean id="newComparator" name="com.sh.action.NewComparator"/>
  		<s:sort comparator="#newComparator" source="#myList">
  			<s:iterator status="st">
  				<s:property value="#st.getIndex()"/>
  				<s:property/>
  			</s:iterator>
  		</s:sort>
  </body>


--访问后
--0 2012 1 2011 2 2010 3 2009 4 2008 5 2007

8.property标签
property:用于输出value的属性指定的额值
该标签有如下几个属性
default:用来指定当属性值为 null 输出的值
escape:用来指定是否显示标签代码,不显示则指定为false。
value:用来指定要输出的属性值
id:用来指定元素的引用id

propertyTag.jsp
<body>
  		<% session.setAttribute("param1","value1");
  			request.setAttribute("param2","value2");
  		%>
  		<s:property value="#session.param1" escape="true"/><br/>
  		<s:property value="#request.param2"/><br/>
  		<s:property value="#session['param1']"/><br/>
  		<s:property value="#request['param2']"/><br/>
  		<s:property default="defaultValue" value="s"/>
  </body>



9.set标签
set:用来定义一个新的变量,并把一个已有的变量值复制给这个新的变量,同事可以把这个新的变量值放到指定的范围
该标签的属性有:
name:用来定义新的变量名字
scope:用来定义新变量的使用范围 可选值有:application session request response page action
value: 用来定义该元素引用的id

setTag.jsp
<body>
  	<h2>Struts2 Set tag 示例</h2>
  	<s:set name="technologyName"  value="%{'Strus 2'}"></s:set>
  	Technology name:
  	<span style="color:green">
  		<s:property value="#technologyName"/>
  	</span>
  	<br/>
  	<h2>使用set 设置一个新的变量</h2>
  	<s:bean name="com.sh.pojo.User" id="u">
  		<s:param name="name" value="'活女神'"/>
  	</s:bean>
  	scope属性值为 action范围
  	<span style="color:green">
  		<s:set value="#u" name="user" scope="action"/>
  		<s:property value="#attr.user.name"/>
  	</span>
  	<br/>
  	scope属性值为session范围:
  	<span style="color:green">
  		<s:set scope="session" value="#u" name="user"/>
  		<s:property value="#session.user.name"/>
  	</span>
  </body>

--访问
--http://localhost:8080/Struts2_Tags/setTag.jsp
--出现下面的
Struts2 Set tag 示例
Technology name: Strus 2
使用set 设置一个新的变量
scope属性值为 action范围 活女神   
scope属性值为session范围: 活女神

10 date标签
date:标签用来按指定的格式输出一个日期,还可以计算指定日期到当前时间的时差,该标签主要有如下一些属性:
format:用来指定日期格式化
nice:指定是否输出指定日期与当前时间的时差,默认值为false,即不输入时差。
name:用来指定要被格式化的日期值
id:用来指定该元素的引用id

DateAction.java
package com.sh.action;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class DateAction extends ActionSupport {

	private Date currentDate=new Date();

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return SUCCESS;
	}
}

dateTag.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts> 
	<!-- 如果 注解的action配置改变时候不需要重新启动tomcate -->
	<constant name="struts.devMode" value="true"/>  
    <constant name="struts.convention.classes.reload" value="true" /> 
	 
	<package name="default" extends="struts-default">
		<action name="dateAction" class="com.sh.action.DateAction">
			<result>/dateTag.jsp</result>
		</action>
	</package>
   
</struts>


11 action标签
action:标签允许在jsp页面中直接调用Action,要嗲用Action 就需要指定Action中的name和namespace属性。下面是Action标签的主要属性
id:可选属性,用来指定被调用的action的引用id
name:必选属性,用来指定被调用Actin的名字
namespace:可选属性,该属性用来指定被调用Action所在的namespace
executeResult:可选属性,用来指定是否将Action的处理结果包含到当前页面中,该属性的默认值为false  即 不包含。
ignoreContextParams:可选属性,用来指定单曲页面中的参数是否需要传递给调用的Action,该属性的默认值为false,即默认页面中的参数传递给被调用的Action

TestAction .java
package com.sh.action;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport {
private String bookName;
private double bookPrice;
@Override
public String execute() throws Exception {
	// TODO Auto-generated method stub
	return SUCCESS;
}


public String showBook(){
	return SUCCESS;
}
//get set
}

struts.xml
<action name="test1" class="com.sh.action.TestAction">
			<result>/execute.jsp</result>
		</action>
		
		<action name="test2" class="com.sh.action.TestAction" method="showBook">
			<result>/showBook.jsp</result>
		</action>


execute.jsp
 <body>
  	<h2>调用了TestAction中的Execute()方法</h2>
  </body>

showbook.jsp
  <body>
  	<h2>调用了TestAction中showBook</h2>
  	图书名称:<s:property value="bookName"/>
  	图书价格:<s:property value="bookPrice"/>
  </body>


action.jsp
<body>
  	<h2>调用了test1 并将Action的处理结果包含到页面中</h2>
  	<s:action name="test1" executeResult="true"></s:action>
  	<br/>
  	<h2>调用了test2 并将Action的处理结果包含到页面中,同时将页面的请求参数传入到Action</h2>
  	<s:action name="test2" executeResult="true" ignoreContextParams="false"></s:action>
  	<br/>
  	<h2>调用了test2 并将Action的处理结果包含到页面中 但不将页面的请求参数传递到Action</h2>
  	<s:action name="test2" executeResult="true" ignoreContextParams="true"></s:action>
  	<br/>
  	<h2>调用了test2 但不将Action的处理结果包含到页面中</h2>
  	<s:action name="test2" executeResult="false"></s:action>
  	
  	
  </body>


//访问
--http://localhost:8080/Struts2_Tags/action.jsp?bookName=黑客帝国&bookPrice=36.0
---可以看到 如下的结果
调用了test1 并将Action的处理结果包含到页面中

调用了TestAction中的Execute()方法


调用了test2 并将Action的处理结果包含到页面中,同时将页面的请求参数传入到Action

调用了TestAction中showBook

图书名称:黑客帝国 图书价格:36.0 
调用了test2 并将Action的处理结果包含到页面中 但不将页面的请求参数传递到Action

调用了TestAction中showBook

图书名称: 图书价格:0.0 
调用了test2 但不将Action的处理结果包含到页面中


12 bean标签
bean:标签用于在当前页面中创建javaBean实例对象,在使用标签穿件javaBean对象时,可以嵌套param标签,为该javaBean标签实例指定属性值。
该标签主要有以下两个属性:
name:必选属性 用来指定可以实例化javabean的实现类
ie:可选属性,如果指定该属性,就可以直接通过id来访问这个javaBean实例。
使用bean标签创建javabean实例时,还可以使用param 标签为该实例传递参数,不过这需要在javabean中传递的参数进行封装。

<body>
  	<h2>Bean标签的使用 </h2>
  	<s:bean name="com.sh.pojo.User" id="user">
  		<s:param name="name">SMITH</s:param>
  		<s:property value="name"/>
  	</s:bean>
  </body>


--访问
--http://localhost:8080/Struts2_Tags/beanTag.jsp
就可以看到初始化的值 打印数了SMITH

13 include标签
include标签用来在当前页面中包含一个jsp页面或者 Servlet 文件
该标签的属性:
id:指定该标签的应用id
value:指定被包含的jsp页面或菏泽Servlet

showDate.jsp

  <body>
    下面是showDate.jsp页面输出的时间<br/>
    <% out.print(new Date()); %>
  </body>


include.jsp
 <body>
  	<s:include value="showDate.jsp"></s:include>
  </body>


--访问
--http://localhost:8080/Struts2_Tags/include.jsp
--会看到时间会显示出来

14 param标签
param:标签用来为其他标签提供参数。该标签有如下属性:
name:指定 参数名:
value:指定参数值
param:标签的使用语法格式有两种,如下
1:<s:param name="参数名" value="参数值"></s:param>
2:<s:param name="参数名">参数值</s:param>


<body>
  	<h2>Bean标签的使用 </h2>
  	====使用第一种格式=====<br/>
  	<s:bean name="com.sh.pojo.User" id="user">
  		<s:param name="name">SMITH</s:param>
  		<s:property value="name"/>
  	</s:bean><br/>
  	===使用第二种格式=====<br/>
  	<s:bean name="com.sh.pojo.User" id="user1">
  		<s:param name="name" value="'SCOTT'"></s:param>
  		<s:property value="name"/>
  	</s:bean>
  </body>


15 push标签
push:标签用来将某个值存放到ValueStack的栈顶中。这样可以使访问这个值变得更简单。 该标签的是属性有:
id:指定该标签的引用id
value:指定需要放到ValueStack栈顶的值。

<body>
  	<h2>Push标签的使用 </h2>
  	<s:bean name="com.sh.pojo.User" id="user">
  		<s:param name="name">SMITH</s:param>
  		<s:property value="name"/>
  	</s:bean><br/>
   ===普通的访问格式<br/>
   <s:property value="#user.name"/><br/>
   ===使用push标签后的访问方式<br/>
   <s:push value="user">
   	<s:property value="name"/>
   </s:push>
  </body>


16 url标签
url:标签用来生成一个URL地址,也可以通过嵌套param标签来为URL指定参数,
该标签的主要属性 如下:
includeParams:用来指定是否请求参数,有3个值可以选参数 none,get(包括get请求的所有参数), all(会包括post请求的参数)
value:用来指定URL的地址值(如果没有这个值 将使用action的值作为Url地址)
action:用来指定一个Action作为URL的地址值 
nameSpace:该属性用来指定命名空间。
method:用来指定调用Action方法名。
encode:用来指定是否encode请求参数
includeContext:用来指定是否将当前上下文包含在URL地址值中。
id:用来指定URL元素的引用ID。
(注意:如果value 和action 都有值)

<body>
  	<h2>指定value属性,并使用param标签传递参数</h2><br>
  	<s:url value="index.jsp">
  		<s:param name="name">xiaoqi</s:param>
  	</s:url><br>
  	
  	<h2>指定action属性,并设置includeParam="none",不包含请求的参数</h2><br>
  	<s:url action="test1.action" includeParams="none"/><br>
  	
  	<h2>同时指定value属性和action属性</h2><br>
  	<s:url value="index.jsp" action="test2.action" includeParams="get">
  	</s:url><br>
  	
  	<h2>即不指定value属性也不指定Actoin属性</h2><br>
  	<s:url>
  		<s:param name="name">xiaoqi</s:param>
  	</s:url>
  	<br>
  </body>


17 表单标签的通用属性
1.模板相关的属性
 templateDir:用来指定标签使用的模板文件的目录

 theme:用来指定标签使用的主题。theme:属性有如下可选值:simple,ajax,  css_html,xhtml。 默认值为xhtml

 template:用来指定标签使用的模版

2.javaScript 相关属性
  tooltip:相关属性。这些属性用来为表单元素设置提示信息,当鼠标悬停在相应元素上时就出现提示内容,tooltip相关属性包括itooltip ooltiplcon,tooltipBorderColor,tooltipFontColor 和 tooltipFontSize等
 
 事件属性:事件包括鼠标事件,键盘事件,焦点事件等。这些事件的属性有很多是常见的:例如  onlcik ondbclick,on从mousedown,onmouseup,onmouseover onmouseout onfocus onblur onkeypress onkeyup onkeydown onselect onchange等

3.通用属性
  title:用来设置表单元素的title属性
  disabled:用来设置表单元素是否可用
  lable:设置表单元素lable属性
  labelPositino:用来设置表单元素的label显示的位置,可选值有top left 默认值为left
  name:设置表单元素的name,该属性值与Action中属性名对应
  value:这是表单元素的值
  cssClass:设置表单元素的class
  cssStue:设置表单元素的style属性
  required:设置表单元素为必填项
  requiredPosition:设置必填标记 (默认为*) 相对于label元素的位置,可选只有left left 默认值为right
  tabindex:设置该表单元素的tabindex属性

name 和value 属性
  name:属性除了为html表单元素指定名字,在表达提交的时候作为请求的参数的名字外,同时还映射到Action的属性。 在大多数情况下,那么属性映射到一个JavaBean属性,例如 name属性为userName,在表单提交后Sturts2框架会调用Action的setUserName()方法来设置属性。
   如果希望在表单元素中显示Action属性的数据,这是可以使用vale
属性,为value属性指定表达式 %{userName},这将调用getUserName()方法,并在表单中显示返回的数据
  <s:form action="updateUser">
    <s:textfield lable="用户名" name="userName" value="%{userName}"/>
  </s:form>
 
 id:Struts2 中所有的表单标签会自动给Html表单元素分配一个id属性,根据需要,这个属性可以被覆盖
  对于表单本身,默认的id是action的名字,例如 updasteUser
  对于表单元素,默认的id是表单名字_表单元素的名字 例如
    updateUser_userName



18 form 标签
名称必须默认值说明
action当前的Action提交的action名字,不需要添加.ation后缀
namespace当前的命名空间提交的action所属的命名空间
methodposthtml表单的method属性 取值为get 或者post
enctype上传文件时,设置为multipart/form-date
focesElement指定为某个表单的元素id,当页面加载时,该元素将具有焦点
validate是否执行客户端验证,只有使用xhmlt或者ajax主题时才有效

--说明
1.如果是输出标的请求和提交表单的请求,属于不通的命名空间,那么可以通过namespace属性指定处理表单提交的action属性的命名空间。
  如果当前输出标的请求和提交标的请求属于同一个命名空间,可以不是哟好难过namespace属性。

2.如果建该表提交给Action中的默认execute()方法,那么form标签的action属性可以忽略。例如 <s:form></s:from> 那么当访问/register!default.action时候,将自动为form标签的Action属性设置为register 然后交给aciotn中的execute()方法处理。

3.但使用验证框架是,将form标签的validate属性设置为true,建自动生成客户端javaScript交易代码。

4.method 和 enctyp 属性是html form 标签的属性。


19 submit 标签
submit:主要是输出一个提交按钮。通过该标签可以输出一下3种类型的提交按钮:
input:等价 html代码 <input type="submit">
image 等价 html代码 <input type="image">
button 等价 html代码 <input type="submit">
除了公共属性外,submit标签还可以指定一下属性:
type:提交按钮的类型,有效值为 input image button
src:为image 类型提供按钮设置图片地址
action:指定处理请求的action
method:指定处理请求的action方法。

案例
例如: 指定image类型的提交按钮,使用method属性,如下:
<s:submit type="image" method="login" src="images/login.gif"/> 上述代码在客户端浏览器的源文件中,显示为如下内容:
<iput type="image" name="method:login" src="images/login.gif" value="Submit"/>

例如: 指定 button 类型的提交按钮,使用action和method属性,如下;
<s:submit type="button" method="login" action="userLogin" lable="用户登录"/> 上述代码在客户端浏览器中的源文件中,显示如下内容:
<buttom type="submit" name="action:userLogin!login" value="Submit">用户登录</buttom>


预定义的前缀
在上面的两个示例中,name属性值分别有两个前缀,method和action,这是Struts2框架提供的一种特性,即使用一些预定义的前缀来命名一个按钮,通过按钮的名字来改变执行的行为。
  Struts2框架定义4个前缀,如下
method  例如 method:login
action  例如 action:userLogin
redirect 例如 redirect:cancel.jsp
redirect-action 例如 redirect-action:register

使用method前缀,来取代action默认的execute()方法的执行。例如,在一个表单中同事事项用户注册和登录,代码如下:
<s:form action="userLogin">
  <s;textfield label="用户名" name="user.userName"/>
  <s:textfield label="密码" name="user.userPassword"/>
  <s:submit value="登录" name="method:login"/>
  <s:submit value="注册" name="method:register"/>
</s:from>
通过两个submit按钮,都提交到userLogin这个action,但是用户单击不同的按钮,分别提交奥到action中不通的方法 即 login和 register 方法进行处理。


使用action前缀,渠道form标签指定的action 将请求导向另外的action进行处理
例如:
<s:from action="userLogin">
  <s:textfield  label="用户名" name="user.userName"/>
  <s:password label="密码" name="user.userPassword"/>
  <s;submit value="登录"/>
  <s:submit value="注册" name="action.register"/>
</s:form>
用户单击登录按钮,将提交到userLogin进行处理,当单击注册按钮,将提交到register进行处理。


使用redirect 前缀,可以将请求重定向到其他的URL,甚至可是是WEB应用程序外的URL
例如:
<s:form action="userLogin">
  <s:textfield label="用户名" name="user.userName"/>
  <s:password label="密码" name="user.userPasswrod'/>
  <s:submit value="登录"/>
  <s:submit value="注册" name="redirect:www.itzcn.com'/>
</s:form>


使用 redirect-action前缀将请求重定向到其他的action,Struts2框架使用ServetRedirectResult来执行这个任务。
例如:
<s:form action="userLogin">
  <s:textfield lable="用户名" name="user.userName"/>
  <s:password label="密码" name="user.userPassword"/>
  <s;submit value="登录"/>
  <s:submit value="注册" name="redirect-action:register"/>
</s:form>


20 seelct 标签
select标签用来在页面中生成一个下拉列表框,该标签的属性如下:
list:必须是Collection, Map iterator array 表示要迭代的集合,使用姐中的元素来设置各个选项。如入list属性值是一个Map,则Map的key会成为选项的Key,map的Value会成为选项的Value

listKey:用来指定结婚中元素的某个属性作为下拉列表框的Key。
listValue:该属性用来指定集合中的元素的某个属性作为下拉列表框的value
multiple:该属性用来指定下拉列表框是否允许多选,其默认值为false
size:用来指定下拉列表框中可以选项个数

<body>
  	<h2>Select 标签的使用</h2><br>
  	<s:form>
  		<s:select name="bookSelect"
  		label="选择图书"
  		list="{'水浒传','三国演义','红楼梦','西游记'}"
  		multiple="true"/>
  		
  		<s:select name="songSelect"
  		label="选择歌曲"
  		list="#{'laxs':'浪子心声','alzm':'暗里着迷','lx':'练习','ruyyt':'如果有一天'}"
  		listKey="key"
  		listValue="value"/>
  	</s:form>
  </body>


21 checkboxlist 标签
主要根据lsit属性指定的集合。来一次性创建多个复选框,即一次性生成多个html表单中的<input type="checkbox"/>如果list属性是一个字符串集合,那就不需要在指定该标签的其他属性,如果list属性是一个java对象或者Map ,那就仍然需要指定标签的listKey和ListValue属性:
listKey:该属性用来指定集合元素中某个属性最为复选框的value,如果集合元素是一个java对象,那么就指定该java对象的name属性作为复选框的value。
listValue:该属性用来指定集合元素中的某个属性作为复选框的标签。如果结婚元素是一个java对象。那么就指定java对象的name属性作为复选框的value。

package com.sh.pojo;

import java.util.List;

public class User {
private String name;
private Book[] books;

public Book[] getBooks() {
	return new Book[]{new Book("SSH入门到精通",68),new Book("Struts 2完全自学手册",22),new Book("深入浅出Hibernate",56)};
}
//get set
}


<body>
  	<h2>Checkboxlist 标签的使用</h2><br>
  	<s:form>
  	   <!-- 使用字符串生成多个复选框 -->
  	   <s:checkboxlist list="{'Java','Jsp','Servlet','Struts 2','AJax'}"
  	   name="skills" label="熟悉技术" labelposition="top"/>
  	   <!-- 使用Map对象来生成多个复选框 -->
  	   <s:checkboxlist name="skillarea" label="你所关注的技术领域"
  	   labelposition="top"
  	   list="#{'Java':'Java','.Net':'.net','DataBase':'database','Ajax':'ajax','JavaScript':'js','HTML':'html'}"
  	   listKey="key"
  	   listValue="value"/>
  	   
  	   <!-- 使用Java对象集合来生成多个复选框 -->
  	   <s:bean name="com.sh.pojo.User" id="user">
  	    </s:bean>
  	   <s:checkboxlist list="#user.books" name="books" 
  	   label="请选择喜欢的图书" labelposition="top"
  	    listKey="name" listValue="name"/>
  	   
  	</s:form>
  </body>


22 radio 标签
radio:用来生成单选按钮,通过指定list listkey listvalue等属性来生成html标签元素,具体用法和checkboxlist标签的用法几乎完全相同,不同的是checkboxlist标签生成的是复选框,而radio生成的单选按钮。

<body>
  	<h2>radio标签的使用 </h2>
  	<s:form>
  	  <!-- 使用字符串集合来生成多个单选按钮 -->
  	  <s:radio list="{'JSP','java','.net','ajax'}"
  	  name="skills" label="熟悉的技术" labelposition="right">
  	  </s:radio>
  	  
  	  <!-- 使用Map来生成多个单选按钮 -->
  	  <s:radio list="#{'Java':'java','.Net':'.net','DataBase':'database'}"
  	  label="你所关注的技术领域"
  	  name="skillsarea"
  	  listKey="key"
  	  listValue="value"
  	  value=".net"/>
  	  
  	  <!-- 使用java对象集合来生成多个单选框 -->
  	  <s:bean name="com.sh.pojo.User" id="user"/>
  	  <s:radio name="books" list="#user.books" listKey="name" listValue="name"
  	  label="请选择你喜欢的图书" labelposition="left"></s:radio>
  	</s:form>
  </body>


23 datetimepicker 标签
datetimepicker:可以生成一个动态日历,单击标签按钮时就会弹出日历选择框,从而可以选择日期和时间,选择日期和时候后,系统就会把选择的日期和时间属输入到指定的文本框中。
常用的属性有:
displayFormat:该属性用来指定日期的显示格式,例如 可以指定yyyy-MM-dd作为日期的显示格式
language:该属性用来指定起立显示的语言,例如  zh_CN
type:用来指定选择框的类型,有两个值可选,date time 分别表示日期选择框和时间选择框。

datetimepicker 在Struts 2.0 和 Struts 2.1.6中使用不一样。
datetimepicker 存在乱码问题,这个还没有解决

Struts2.0 的使用
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
 <head>
   <s;head theme="ajax"/>
</head>

<body>
   <h2>Struts2.0 datetimepicker 标签</h2>
  <s:form action="addUser" namespace="/user">
   <s:datatimepicker name="birthday" label="出生日期" displayFormat="yyyy/MM/dd"/>

  <s:datatimepicker name="recordtime" label="记录时间" type="time" language="en_US"/>
  </s:form>
</body>
<html>


Struts 2.1.6 的使用
<!-- 第一步 :导入 struts2-dojo-plugin-xxx.jar--->
<!-- 第二步 :导入 uri="/struts-dojo-tags" dojo 标签--->
<!-- 第三步 :在<head>体加入 <sx:head/> 或者 <s:head theme="xhtml"/>,<sd:head parseContent="true"/> 的标记 --->
<!-- 第四步 :和平常一样使用datetimepicker--->
<body>
  	<h2>Struts2.1.6 datetimepicker标签的使用 </h2>
  	    <!-- 西方的排列方式 "日"在第一列 -->
  		<s:form action="test1" method="post">
  		<sx:datetimepicker name="user.birthday"
  		label="出生日期" displayFormat="yyyy/MM/dd"/>
  	
  		<!-- 中国的排列方式 "一"在第一列 -->
  		<sx:datetimepicker name="user.birthday"
  		label="出生日期" displayFormat="yyyy/MM/dd"
  		weekStartsOn="1"/>
  		
  		<!-- toggleType="fade" -->
  		<sx:datetimepicker name="user.birthday"
  		label="出生日期" displayFormat="yyyy/MM/dd"
  		toggleType="fade"/>
  		
  		<!-- displayWeeks="4":表示显示的日期行数 默认为6行-->
  		<sx:datetimepicker name="user.birthday"
  		label="出生日期" displayFormat="yyyy-MM-dd HH:mm:ss"
  		displayWeeks="4"/>
  		
  		<!-- toggleType="explode" toggleDuration="400" 指定动画效果 400ms缓慢显示-->
  		<sx:datetimepicker name="user.birthday"
  		label="出生日期" displayFormat="yyyy-MM-dd HH:mm:ss"
  		toggleType="explode" toggleDuration="400"/>
  	
  	
  		
  		<sx:datetimepicker name="recordTime" 
  		label="记录时间"
  		type="time"></sx:datetimepicker>
  	</s:form>
  </body>


24 combobox标签
combobox:会生成两个元素,分别是单行文本框和下拉列表,并将他们组合在一起提供组合框(combobox)的功能,可以使用列表框将文本放入到文本框中,也可是直接在文本框中输入文件,可以使用的属性:
list:必须的 Collection Map iterator  Array 表示要迭代的集合,使用集合中的元素来设置列表框的各个选项。
maxlength:指定组合框的文本框部分可以输入字符的最大长度
readonly:当属性值为true时,用户不能在文本框中输入文本
size:指定组合框的文本输入框部分的可视尺寸。

<body>
  	<h2>Combobox标签的使用 </h2>
  	<s:form>
  		<s:combobox list="{'红楼梦','水浒传','三国演义','西游记'}"
  		label="选择喜欢的图书"
  		name="chooseBook"
  		cssStyle="width:70px;"
  		readonly="true"/>
  		
  		<s:bean name="com.sh.pojo.User" id="user"></s:bean>
  		<s:combobox list="#user.books"
  		name="likeBooks"
  		listKey="name"
  		listValue="name"
  		size="50px;"
  		maxlength="5"
  		label="喜欢的书"
  		cssClass="width:70px;"></s:combobox>
  		
  	</s:form>
  </body>


25 doubleselect标签
doubleselect:标签用来在页面中生成一个级联列表框,第二个列表框显示的内容随第一个列表框选中的选项而变化。
该标签的属性如下:
list:必选属性,用于输出第一个下拉列表框中选项的集合。
listkey:用来指定集合种元素的某个属性作为第一个下拉列表框的key。如果集合是Map,则可以设置该属性值为字符串key或者value,分别用来将Map对象的key或value作为下拉列表框的key。
listValue:用来指定集合中元素的某个属性作为第一个下拉列表框的value。如果集合是Map。则可以设置该属性值为字符串key或value,分别用来将Map对象的key或value作为下拉列表框的value。
doubleList:该属性用来指定 输出第二个下拉列表框中选项的集合。
doubleListKey:用来指定集合中元素的某个属性作为下拉列表框中的key。如果是Map,则可以设置该属性值为字符串key或者value,分别用来将Map对象的key或者value最为下拉列表的key。
doubleListValue:该属性用来指定集合中元素的某个属性作为第二个下拉列表框的value。如果集合是Map,则可以设置该属性值为字符串的key或者value,分别用来将Map对象的key或value作为下拉列表框的value。
doubleName:用来指定第二个下拉列表框的name属性
doubleVale:用来初始化第二个列表框中的值。

<body>
  	<h2>doubleSelect标签的使用 </h2>
  	<s:form>
  		<s:doubleselect 
  		name="singer"
  		label="选择您喜欢的歌曲"
  		list="{'刘德华','张学友','SHE'}" 
  		doubleList="top=='刘德华'?{'浪子心声','如果以一天','练习'}:(top=='张学友'?{'吻别','饿狼传说','情书'}:{'Super start','半糖主义','中国话','波斯猫'})" 
  		doubleName="song"
  		labelposition="top"></s:doubleselect>
  	
  	    <s:set name="bookList"
  	    value="#{'曹雪芹':{'红楼梦'},'罗贯中':{'三国演义'},'施耐庵':{'水浒传'},'吴承恩':{'西游记'}}"/>
  	    
  	    <s:doubleselect 
  	    name="author"
  	    label="选择喜欢的图书"
  	    list="#bookList.keySet()" 
  	    doubleList="#bookList[top]" 
  	    doubleName="book"
  	    labelposition="top"></s:doubleselect>
  	</s:form>
  </body>


26 optiontransferselect标签
optiontransferselect:用来在页面中生成转移列表组件。它是由两个<select>标签,以及这两个标签中用于将选项在两个<select>标签之间相互移动的按钮组成。
该标签的属性如下:
list:用来设置第一个i额列表框的集合
listKey:指定使用集合中对象的哪一个属性作为选项的value。针对第一个列表框有效。
listValue;指定使用集合中的对象的哪一个属性作为选项的内容。针对第一个列表框有效。
doubleList:设置第二个列表框的集合
doubleListKey:指定使用集合中对象的哪一个属性作为选项的value,针对第二个列表框有效。
doubleListValue:指定使用集合中对象的哪一个属性作为选项的内容,针对第二个列表框有效。
name:设置第一个列表框的name属性
vlaue:设置第一个列表框的value属性
multiple:设置第一个列表框是否支持多选,默认值为false
lefttile:设置左边列表框的标题
righttitle:设置右边列表框的标题
doubleName:设置第二个列表框的name属性
doubleValue:设置第二个列表框的value属性
doubleMultiple:设置第二个列表框是否支持多选,默认值为true
allowSelectAll:设置是否出现事项全部选项功能的按钮
selectAllLabel:设置事项全选功能的按钮上的文本
addAllToLeftLabel:设置实现全部左移功能的按钮上的文本。
addAllToRightLabel:设置实现全部右移功能的按钮上的文本。
addToLeftLabel:设置实现左移功能的按钮上的文本
addToRightLabel:设置实现右移功能的按钮上的文本
allowAddAllToLeft:设置是否出现实现全部左移功能的按钮。
allowAddAllToRight:设置是否出现实现全部右移功能的按钮。

<body>
  	<h2>Bean标签的使用 </h2>
  	<s:form>
  		<s:optiontransferselect
  		label="选择喜欢的歌曲"
  		name="selectSong" 
  		labelposition="top"
  		leftTitle="歌曲列表"
  		rightTitle="您选择了以下歌曲"
  		list="{'浪子心声','暗里着迷','练习','如果有一天','天堂','男人哭吧哭吧不是醉','黑蝙蝠中队','爱火烧不经','等你爱你到最后','跟我两辈子'}"
  		headerKey="headKey"
  		headerValue="---请选择----"
  		multiple="true"
  		emptyOption="true" 
  		doubleList="" 
  		doubleName="yourSongs"
  		doubleEmptyOption="true"
  		doubleHeaderKey="doubleHeaderKey"
  		doubleHeaderValue="---请选择---"
  		doubleMultiple="true"
  		addAllToLeftLabel="全部移出去"
  		addAllToRightLabel="全部选择"
  		addToLeftLabel="移出"
  		addToRightLabel="选择"
  		selectAllLabel="全选"
  		rightDownLabel="下移"
  		rightUpLabel="上移"
  		leftDownLabel="下移"
  		leftUpLabel="上移"></s:optiontransferselect>
  	</s:form>
  </body>


27 optgroup标签
optgroup:标签用来在页面中生成一个下拉框的选项组。也就是在下拉框中包含多个选项组,提供分类选择。
该标签做为select的子标签,创建一个选项组。可以在select标签的标签体中使用一个或者多个optgroup标签,对选项进行逻辑分组。但是optgroup本身不能嵌套。

list:必须的,属性的数据类型可以是Collection Map iterator Array 表示要迭代的集合,使用集合中的元素来设置各个选项。
listKey:用来指定集合中元素的某个属性作为选项的Key
listValue:用来指定集合中元素的某个属性作为选项的value。

 <body>
  	<h2>optgroup标签的使用 </h2>
  <s:select 
  label="选择您喜欢的歌曲"
  name="selectSong"
  list="#{'ggcjdss':'滚滚长江东逝水','wnm':'枉凝眉','hhg':'好汉歌','gwlzhf':'敢问路在何方'}">
	  <s:optgroup
	  label="刘德华歌曲"
	  list="#{'lzyx':'狼子野心','alzm':'暗里着迷','lx':'练习'}"
	  listKey="key"
	  listValue="value">
	  </s:optgroup>
	  <s:optgroup
	  label="SHE歌曲"
	  list="#{'bsm':'波斯猫','btzy':'半糖主义','aqhy':'爱情海洋'}"
	  listKey="key"
	  listValue="value">
	  </s:optgroup>
  </s:select>
  </body>


28 updownSelect标签
updownselect:标签用来创建一个带有上下移动的按钮的列表框,可以通过上下移动按钮来调整列表框中的选项的位置。
该标签的属性如下:
list:必须的,属性的数据类型可以是Collection,Map iterator 或者 Array 表示要迭代的集合,使用集合的元素来设置各个选项。
multiple:如果值为true 创建一个多选列表。
size:设置下拉列表现实的选项个数。
allowMoveUp:是否显示实现上移功能的按钮 默认值为true
allowMoveDown:设置是否显示实现下移功能的按钮,默认值是true。
allowSelectAll:设置是否显示实现全选功能的按钮,默认只是ture
moveUpLablel:设置上移按钮的文本,默认值为 “ ∨ ”
moveDownLabel:设置下移按钮的文本。默认值为 “ ∧ ” 
selectAllLabel:设置全选按钮的文本。默认值是“ * ”
listKey:指定集合中元素的某个属性作为选项的key
listValue:指定集合中元素的某个属性作为选项的value。
headerkey:设置单用户选择了header选项是提交的值。如果设置该属性,则不能为该属性赋空值。
headervalue:设置header选项的内容。
EmptypOption:是否在header选项后添加一个空选项。

 <body>
  	<h2>updownselect标签的使用 </h2>
  	<s:form>
  		<s:updownselect 
  		label="歌曲列表"
  		name="sons"
  		list="#{'lzxs':'浪子心声','lx':'练习','gwlbz':'给我两辈子'}"
  		headerKey="1"
  		headerValue="---选择---"
  		selectAllLabel="全选"
  		moveDownLabel="下移"
  		moveUpLabel="上移"></s:updownselect>
  	</s:form>
  </body>


--非表单标签
29 component标签
component:标签用来创建自定义组建。在component标签内还可以使用param子标签,通过param标签向标签模版中传递参数。
该标签的属性如下:
theme:该属性用来指定自定义组件所使用的主题。如果不指定该属性,则默认使用xhtml主题。
templateDir:该属性用来指定自定义主键的主题目录。如果不指定该属性,则默认使用系统的主题目录,即template目录
template:该属性用来指定自定义组件所使用的模版文件,自定组件是基于主题模版管理的,在自定义模版文件中,可以采用FreeMarker ,Jsp 和Veloctiy3中技术编写。
如果是FreeMarker模版,可以通过${parameters.key}或者${parameters.get('key')} 来获取对象
如果是JSP 模版,可以通过<s:property value="%{parameter.key}"/> 或者 <s:property value="%{parameters.get('key')}"/> 来获取对象

component.jsp
 <body>
  	<h2>Conponent标签的使用 </h2>
  	<s:component template="myTemplate.jsp">
  		<s:param name="songList" 
  		value="{'情书','来生缘','如果有一天','流浪'}"/>
  	</s:component>
  </body>

在webroot/template/xhtml/myTemplate.jsp
<body>
  	<div style="font-weight: bold;color:blue;">
  		<h5>自定义模版</h5>
  	    <hr>
  	 	<s:select label="歌曲列表" list="parameters.songList"/>
  	</div>
  </body>


30 actionerror和actionmessage标签
actionerror和actionmessage:标签的用法和效果几乎是一样的,都是用来输出Action中的消息。
区别:
actionError标签,用来输出Action中getActionError()方法的返回值。
actionMessage标签,用来输出Action中getActionMessage()方法的返回值。

action.java
package com.sh.action;

import com.opensymphony.xwork2.ActionSupport;

public class MsgAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		addActionError("this is the first ERROR!");
		addActionError("this is the second ERROR!");
		addActionMessage("this is the first Message");
		addActionMessage("this is the second Message");
		return SUCCESS;
	}

}

struts.xml
<action name="test3" class="com.sh.action.MsgAction">
			<result>/actionMessageError.jsp</result>
		</action>

jsp
 <body>
  	<h2>ActionError 和 ActionMessage标签的使用 </h2>
  	<s:actionerror/>
  	<s:actionmessage/>
  </body>


31 tree和treenode标签
tree和treenode这2个标签主要用来生成一个树形结果,例如常见的树形结构菜单和树形列表等。其中tree标签用来生成树形结构,treenode标签用来生成树形结构中的节点。
Struts2.1.6之后将tree treenode 放到dojo包中了 

Struts2.0之前 使用 s标签就可以,并且每个表都要设置theme=‘ajax’
Struts2.1.6
<!--导入 struts2-dojo-plugin-2.3.4.1.jar -->
<!--导入 /struts-dojo-tags 标签 -->
<!---在head中 加入 <sx:head/>--->
<body>
  	<h2>tree  treeNode标签的使用 </h2>
  	<sx:tree label="计算机编程系列图书" 
  	id="books"
  	showRootGrid="true"
  	showGrid="false"
  	treeSelectedTopic="treeSelect">
  	<sx:treenode label="Java基础" id="ajax" >
  		<sx:treenode label="Java程序设计案例教程" id="java"/>
  		<sx:treenode label="Jsp实例教程" id="JSP"/>
  		<sx:treenode label="AJax+Jsp巧学巧用" id="AJax-Jsp"/>
  		<sx:treenode label="AJax完全学习手册" id="AJax"/>
  	</sx:treenode>
    <sx:treenode label="Web框架" id="web">
    	<sx:treenode label="JSP开发入门到精通" id="web_jsp"/>
    	<sx:treenode label="SSH入门到精通" id="SSH"/>
    	<sx:treenode label="Struts2 完全学习手册" id="Struts2"/>
    	<sx:treenode label="Hibernate3入门到精通" id="hibernate"/>
    </sx:treenode>  	
  	</sx:tree>
  </body>
0
1
分享到:
评论
2 楼 Luob. 2012-09-03  
MyItmy97 写道

还没有写完,慢慢补充。
1 楼 MyItmy97 2012-09-03  

相关推荐

    Struts2常用标签总结

    java Web开发,我们最常用的Struts2常用标签总结,帮助你Struts2常用标签有那些功能

    Struts2常用标签

    本篇文章主要关注Struts2中的常用标签,这些标签大大简化了Web开发中的一些常见任务。 首先,我们要明白Struts2标签库与Struts1.x的不同之处。在Struts1.x中,标签库按照功能划分为HTML、Tiles、Logic和Bean等几个...

    struts2常用标签详解(实用版)

    ### Struts2常用标签详解(实用版) #### 引言 在Java Web开发领域中,Struts2框架因其丰富的功能及灵活的配置而备受开发者们的青睐。为了更好地掌握Struts2框架并提升开发效率,本文将详细介绍Struts2中常用的...

    Struts2常用标签&DispatchAction.rar

    03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar

    struts2常用标签详解

    本文将深入解析Struts2中的常用标签,这些标签在实际开发中非常实用,对于初学者理解并掌握Struts2的运行机制至关重要。 首先,我们需要了解Struts2标签库的主要组成部分,它们分为Action、Display、Logic、Field和...

    struts2.0常用标签文档

    本文档主要针对"struts2.0常用标签"进行详细讲解,帮助开发者更好地理解和使用这些标签。 1. **ognl表达式**:Struts2中的标签大部分都基于OGNL(Object-Graph Navigation Language)表达式,它用于在视图层和模型层...

    Struts2常用标签及说明

    ### Struts2常用标签及其应用详解 #### 一、引言 Struts2是一个基于MVC模式的开源Java Web框架,它提供了丰富的标签库来帮助开发者更高效地进行Web应用程序的开发。这些标签不仅简化了页面逻辑的编写,还提高了代码...

    struts2常用标签总结

    5. **其他常用标签** - **s:form**:创建HTML表单,可以自动绑定Action中的方法。 - **s:action**:执行一个Action并渲染结果。 - **s:submit**:在表单中提交按钮,可以指定执行的方法。 - **s:checkbox**、`s:...

    Struts2常用标签的使用以及Action传值

    Struts2表单标签的应用实例。 主要功能是在一个页面提交个人信息之后跳转到另一个页面显示之前所提交的个人信息。具体介绍和功能演示请移步我的博客: http://blog.csdn.net/qq_33171970/article/details/51380991

    struts2常用标签详解,带有例子

    里面有struts2的很常用的标签,而且还有例子,通俗易懂

    struts三个常用标签

    Struts是Apache软件基金会(ASF)赞助的一个开源...总之,Struts2的这三个常用标签极大地简化了Java Web开发中的视图层构建,提高了开发效率。结合JSTL等其他标签库,我们可以构建出更高效、更易于维护的Web应用程序。

    struts常用标签示例

    本示例将深入探讨Struts中常用的标签及其应用。 1. **`&lt;s:form&gt;`** 标签: 这是Struts2中最基本的表单标签,用于创建HTML表单。它可以自动绑定到Action类的属性,提供数据验证等功能。例如: ```jsp 用户名"/&gt;...

    Struts2 常用标签

    ### Struts2常用标签解析 #### 一、概述 Struts2是Apache组织下的一个开源框架,用于构建企业级Java Web应用。它基于MVC(Model-View-Controller)设计模式,提供了一套完整的解决方案来简化Web应用的开发流程。在...

    Struts2常用的Ajax标签

    ### Struts2中常用的Ajax标签解析 在Struts2框架中,为了简化Ajax通信过程,引入了一系列便捷的Ajax标签,这些标签能够有效地提高Web应用程序的交互性和用户体验。本文将深入探讨Struts2中常用的Ajax标签及其用法,...

    Struts2页面开发中常用的标签介绍

    #### 三、Struts2页面开发中常用标签使用规范 - **数据传递**: 在向Action传递数据时,推荐使用`&lt;s:textfield&gt;`等Struts2标签,以利用其内置的数据绑定机制。 - **属性显示**: 显示Action中的属性值时,使用`...

    struts2常用标签方法总结

    struts2常用标签方法总结

Global site tag (gtag.js) - Google Analytics