Struts的标签--实例
2015-10-28 10:34
423 查看
Struts的标签--实例对于一些标签中实例应用
代码下载链接:点击打开链接
参考文档下载链接:点击打开链接
<%@ 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>zhangvalue的标签</title>
<meta http-equiv="Content-Type" content="html/text;charset=UTF-8">
<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">
</head>
<body>
<form >
<h1>zhangvalue的checkboxlist标签</h1>
<h3>checkboxlist(多选框)标签:用到list可以是指定的"</h3>
<s:checkboxlist name="b" label="选择你最喜欢的课程:"
labelposition ="top" list ="#{'java':'java','c++':'c++','javaee':'javaee','
database':'数据库' }"
listKey="key"
listValue="value"/></br>
<h3>checkboxlist标签:用到list可以不是指定的"</h3>
<s:checkboxlist name="c"
label="选一个你最喜欢的老师:" list ="sts"
listKey="sno" listValue="sname"/></br>
<h1>zhangvalue的select标签</h1>
<h3>select标签:指定list的,也可不指定"</h3>
<s:select
mutiple ="true"
list="sts" listkey="sno" listValue="sname"/>
sno:<s:textfield name="sno" />
<s:hidden name="sname" /></br>
<h1>zhangvalue的radio标签</h1>
<h3>radio(单选框)标签:指定list"</h3>
<s:radio name="c" list="sts" listkey="sno" listValue="sname"/></br>
<h1>zhangvalue的set标签</h1>
<h3>set标签:指定value的值"</h3>
<s:set var="c" value="33"/>
c:<s:property value="%{#c+1})"/>
c:<s:property value="#c+1"/></br>
<h1>zhangvalue的Date标签</h1>
<h3>Date标签:指定format="yyyy年MM月dd日"</h3>
<s:date name="d" format="YYYY-MM-dd"/>
</form>
<%-- <s:datetimepicker name="d" label ="选择时间"/> --%>
<h1>zhangvalue的bean标签</h1>
<h3>没有指定id属性,bean标签创建的Student对象被放到值栈的顶部</h3>
<s:bean name="org.soft.model.student">
<s:param name="sname" value="'zhangvalue'"/>
<s:param name="sno" value="'201322450805'"/>
用户名:<s:property value="sname"/><br> <!-- 可以正常输出sname属性 -->
邮箱:<s:property value="sno"/> <!-- 可以正常输出sno属性 -->
</s:bean>
<p>
用户名:<s:property value="sname"/><br> <!-- student对象已从栈顶删除,输出为空-->
学号:<s:property value="sno"/> <!-- student对象已从栈顶删除,输出为空-->
<h3>指定了id属性,bean标签创建的Student对象被放到值栈的顶部和OgnlContext中</h3>
<s:bean name="org.soft.model.Student" id="student">
<s:param name="sname" value="'zhangvalue'"/>
<s:param name="sno" value="'201322450805'"/>
用户名:<s:property value="sname"/><br> <!-- 可以正常输出sname属性 -->
学号:<s:property value="sno"/> <!-- 可以正常输出sno属性 -->
</s:bean></br>
<p>
<!-- 访问保存到OgnlContext中的student对象 -->
用户名:<s:property value="#student.sname"/><br> <!-- 可以正常输出student对象的sname属性 -->
学号:<s:property value="#student.sno"/></p> </br> <!-- 可以正常输出student对象sno属性 -->
<h1>zhangvalue的combobox标签</h1>
<s:combobox label="请选择你喜欢的老师" list="{'apple','oranger','pear','banana'}" name="fruit"/></br>
<h1>zhangvalue的iterator标签</h1>
<h3>zhangvalue的iterator标签</h3>
<table border ="1" width="200">
<s:iterator value="{'apple','orange','pear','banan'}" id="fruit" status="st">
<tr<s:if test="#st.even">style="background=color.silver"</s:if>>
<td><s:property value="fruit"/></td>
</tr>
</s:iterator>
</table>
<h1>zhangvalue的append标签</h1>
<s:append id="zhang">
<s:param value="{'apple','orange','pear','banana'}"/>
<s:param value="{'chinese','english','french'}"/>
</s:append>
<table border="1" width="400">
<s:iterator value="#zhang" id="fruit" status="st">
<tr <s:if test="#st.even">style="background-corlor:silver"</s:if>>
<td><s:property value="fruit"/></td>
</tr>
</s:iterator>
</table>
<h1>zhangvalue的merge标签</h1>
<s:set var="list1" value="{'one','two','three'}"></s:set>
<s:set var="list2" value="{'red','blue','black'}"></s:set>
<h3>用merge将多个列表组合在一起迭代</h3>
<s:merge var="alllist2">
<s:param value="#list1"></s:param>
<s:param value="#list2"></s:param>
</s:merge>
<s:iterator value="%{#alllist2}">
<s:property/>
</s:iterator>
<h1>zhangvalue的action标签</h1>
<h3>不执行结果,调用ZhangAction的doDefault()方法,获取请求对象中的greeting属性</h3>
<s:action name="zhangvalue!default" executeResult="false" namespace="/"/>
<!-- 获取请求对象中的greeting属性 -->
<s:property value="#attr.greeting"/>
<h1>zhangvalue的if-else if-else标签</h1>
<form action="hello">
<label for="name">请选择一个老师</label><br/>
<select name="name">
<option name="Mike">Mike</option>
<option name="Jason">Jason</option>
<option name="Mark">Mark</option>
</select>
<input type="submit" value="Say Hello"/>
<s:if test="name=='Mike'">
You have selected '白老师'.
</s:if>
<s:elseif test="name=='Jason'">
You have selected '曹老师'
</s:elseif>
<s:elseif test="name=='Mark'">
You have selected '王老师'
</s:elseif>
<s:else>
You have not selected '"王老师"' or '曹老师'or'白老师'.
</s:else>
</form>
<h1>zhangvalue的generator标签</h1>
<h3>利用generator拆分字符串,在外部用iterator迭代输出</h3>
<s:generator val="%{'red','blue','green','black'}" separator="," count="3" var="gen">
<s:iterator value="#gen">
<s:property/><br>
</s:iterator>
</s:generator>
<h3>自定义拆分字符串</h3>
<s:generator val="%{'red','blue','green','black'}" separator="," converter="%{myConverter}">
<s:iterator>
<s:property/><br>
</s:iterator>
</s:generator>
<h1>zhangvalue的url-a标签</h1>
<h4>使用标签a引用url标签生成URL</h4>
<s:a href="http://blog.csdn.net/zhangvalue">
zhangvalue的博客:请点击
</s:a>
<h1>zhangvalue的subset标签</h1>
<s:bean var="myDecider" name="example.Decider.OddDecider"></s:bean>
<s:set var="myList" value="{'1','2','3','4'}"></s:set>
<h3>利用subset从列表中截取子集,起始索引为2,截取3个元素</h3>
<s:subset source="#myList" start="2" count="3">
<s:iterator>
<s:property/>
</s:iterator>
</s:subset>
</body>
</html>
如果还需要看这个doc版本如下:
数据标签
一. <s:property>标签
property标签用于输出指定值:
(1)default:可选属性,如果要输出的属性值为null,则显示该属性指定值。
(2)escape:可选属性,指定是否格式化HTML代码。
(3)value:可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值。
(4)id:可选属性,指定该元素的标识。
例:<s:set name=”name” value=”baihuiru”/>
<s:set property value=”#name”/>
二.<s:set>标签
set标签用于将某个值放入指定范围内。例如application,session范围等。
(1)name:必选,重新生成新变量的名字。
(2)scope:可选,指定新变量的存放范围,该属性的取值一般为application,session,request,page或action。如果没有指定该属性,则默认放置在值栈中。
(3)value:可选,指定赋给新变量的值。如果没有指定该属性,则将值栈栈顶的值赋给新变量。
(4)id:可选,指定该元素的引用id。
<!-- 使用bean标签定义一个javaBean实例--!>
<s:bean name="lee.Person" id="p">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="29"/>
</s:bean>
将p放入默认范围内
<s:set value="#p" name="test"/>
<s:property value="#test.name"/> <br>
<s:property value="#test.age"/> <br>
三.<s:param>标签
param主要用于为其他标签提供参数。
(1)name:可选,指定需要设置参数的参数名。
(2)value:可选,指定需要设置参数的参数值。
(3)id:可选,指定该元素的引用id。
例如,若想在value属性中输入直接量,则可以这样写:
<s:param name="some">user</s:param>。
四.<s:bean>标签
bean标签主要用于创建一个JavaBean的实例。创建JavaBean实例时,可以在该标签内使用param标签为该JavaBean实例实例传入属性。如果需要使用param标签为该JavaBean实例传入属性值,则应该为该JavaBean类提供对应的setter方法。如果还希望访问该属性值,则必须为该属性提供getter方法。
(1)name:该属性是必选的,用来指定要实例化的JavaBean的实现类。
(2)id:该属性是可选的,如果指定了该属性,则该JavaBean实例会被放入Stack Context中,从而允许直接通过id属性来访问该JavaBean实例。
例子:
有一个Student类,该类中有name属性,并有其getter和setter方法:
public class Student {
privateString name;
publicString getName() {
returnname;
}
publicvoid setName(String name) {
this.name=name;
}
}
然后在JSP文件的body体中加入下面的代码:
<s:bean name="Student">
<s:paramname="name" value="'baihuiru'"/>
<s:property value="name"/>
</s:bean>
五.<s:action>标签
使用action标签可以允许在JSP页面中直接调用Action。该标签有以下几个属性:
(1)id:该属性是可选的,该属性将会作为该Action的引用标志id。
(2)name:该属性是必选的,指定该标签调用哪个Action。
(3)namespace:该属性是可选的,指定该标签调用的Action所在的namespace。
(4)executeResult:该属性是可选的,指定是否要将Action的处理结果页面包含到本页面。如果值为true,就是包含,false就是不包含,默认为false。
(5)ignoreContextParam:该属性是可选的,指定该页面中的请求参数是否需要传入调用的Action。如果值为false,将本页面的请求参数传入被调用的Action。如为true,不将本页面的请求参数传入到被调用的Action。
例:
<s:action name=”actinName”executeResult=”true”namespace=”/”>
<s:param name=”currentPage”value=”传递的值”></s:param>
</s:action>
六.<s:date>标签
date标签主要用于格式化输出一个日期。该标签有如下属性:
(1)format:该属性是可选的,如果指定了该属性,将根据该属性指定的格式来格式化日期。
(2)nice:该属性是可选的,该属性的取值只能是true或false,用于指定是否输出指定日期和当前时刻之间的时差。默认为false,即不输出时差。
(3)name:属性是必选的,指定要格式化的日期值。
(4)id:属性是可选的,指定引用该元素的id值。
(5)nice属性为true时,一般不指定format属性。因为nice为true时,会输出当前时刻与指定日期的时差,不会输出指定日期。当没有指定format,也没有指定nice="true"时,系统会采用默认格式输出。其用法为:
<s:date name="指定日期取值" format="日期格式"/><!-- 按指定日期格式输出 -->
<s:date name="指定日期取值" nice="true"/><!-- 输出时间差 -->
<s:date name="指定日期取值"/><!—默认格式输出-->
例子:
<s:datename="person.birthday" format="dd/MM/yyyy" />
<s:datename="person.birthday" format="%{getText('some.i18n.key')}" />
<s:datename="person.birthday" nice="true" />
<s:date name="person.birthday" />
七.<s:include>标签
include标签用于将一个JSP页面或一个Servlet包含到本页面中。该标签有如下属性:
(1)value:该属性是必选的,指定需要被包含的JSP页面或Servlet。
(2)id:该属性是可选的,指定该标签的id引用。
用法如下:
<s:include value="JSP或Servlet文件" id="自定义名称"/>
例:
<h2>使用s:clude标签来包含目标页面</h2>
<s:include value=”include-file.jsp”/>
<!-使用s:include标签来包含其他页面,并且传入参数-->
<s:include value=”include-file.jsp”/>
<s:param name=”author” value=”yeeku”/>
</s:include>
八.<s:url>标签
1,用于生成一个URL地址,
寻找url标签库<%@taglib url="/struts-tags" prefix="s"%>
2,例:<s:urlaction=”helloworld_add” namespace=”/test”><s:param name=”personid”value=”22”/></s:url>
生成类似路径:/struts/test/helloworld_add.action?personid=22
3, url标签有个特点:value=”#myurl”输出的是字符串,value=”%{#myurl}”输出的才是ognl表达式。
例:<s:set name=”myurl” value=”http:/www.shop.net”/>
<s:url value=”#myurl” /><br>
<s:urlvalue=”%{#myurl}” />
输出结果:
#myurl
http:/www.shop.ne
控制标签
九.<s:if>/<s:elseif>/<s:else>标签
这3个标签可以组合使用,但只有if标签可以单独使用,而elseif和else标签必须与if标签结合使用。if标签可以与多个elseif标签结合使用,但只能与一个else标签使用。其用法格式如下:
<s:set name="month" value="1" />
< s:if test="#month>0 &&month<=3">
第一季度
</s:if>
< s:elseif test="#month>3 &&month<=6">
第二季度
</s:elseif>
< s:elseif test="#month>6 &&month<=9">
第三季度
</s:elseif>
< s:elseif test="#month>9 &&month<=12">
第四季度
</s:elseif>
< s:else> 输入错误 </s:else>
十.<s:iterator>标签
Iterator标签用于对集合进行迭代,这里的集合包含List,Set和数组
例:<s:setname=”list” value=”{‘aa’,’bb’,’cc’}”/>
<s:iteratorvalue=”#list” status=”st”>
<fontcolor=<s: if test=”#st.odd”>green</s:else>blue</s:else>>
<s:property /></font><br>
</s:iterator>
(1)value: 可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。
(2)id:可选属性,指定集合里元素的id(已被标注为过时)。
(3)status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
int getCount(),返回当前迭代了几个元素。
int getIndex(),返回当前迭代元素的索引。
bolean isEven(),返回当前被迭代元素的索引是否为偶数
boolean isOdd(),返回当前被迭代元素的索引是否为奇数
boolean isFirst(),返回当前被迭代元素是否为第一个元素
boolean isLast(),返回当前被迭代元素是否为最后一个元素
</s:else>
十一,<s:append>标签
用于将多个集合对象拼接在一起,必需指定一个id属性,以确定拼接生成的新属性的名称
例:<%@ page language="java"pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags"prefix="s" %>
<html>
<head>
<title>控制标签</title>
</head>
<body>
<s:appendid="newList">
<s:paramvalue="{'apple','orange','pear','banana'}"/>
<s:param value="{'chinese','english','french'}"/>
</s:append>
<table border="1"width="200">
<s:iteratorvalue="#newList" id="fruit" status="st">
<tr <s:iftest="#st.even">style="background-color:silver"</s:if>>
<td><s:propertyvalue="fruit"/></td>
</tr>
</s:iterator>
</table>
</body>
</html>
十二.<s:merge>标签
与<s:append>标签用法相似,只是采用的拼接方式不同。假设有2个集合,第一个集合包含3个元素,第二个集合包含2个元素,分别用append标签和merge标签方式进行拼接,它们产生新集合的方式有所区别。
大部分的表单标签和HTML表单元素是一一对应的关系,如下面的代码片段:
<s:form action="login.action" method="post"/>
对应着:
<form action="login.action"method="post"/>
<s:textfield name="username" label="用户名" />
对应着:
用户名:<input type="text" name="username">
<s:password name="password" label="密码"/>
对应着:
密码:<input type="password" name="pwd">
还有下面这种情况,如果有这样一个JavaBean类,类名为“User”,该类中有两个属性:一个是username;另一个是password,并分别生成它们的getter和setter方法,在JSP页面的表单中可以这样为表单元素命名:
<s:textfield name="user.username" label="用户名" />
<s:password name="user.password" label="密码"/>
表单标签
十三,<s:checkboxlist>复选框
1.如果集合为list
<s:checkboxlist name=”list” list=”{‘a’,’b’,’c’,’d’}”value=”{‘a’,’b’}”/>
生成如下HTML代码:
<inputtype=”checkbox” name=”list” value=”a”checked=”checked”/><lable>a<lable>
<input type=”checkbox” name=”list” value=”b”checked=”checked”/><lable>b<lable>
<input type=”checkbox” name=”list”value=”c” /><lable>c<lable>
<input type=”checkbox”name=”list” value=”d” /><lable>a<lable>
2,如果集合为MAP
<s:chckboxlist name=”map”list=”#{1:’aa’,2:’bb’,3:’cc’}” listKey=”key” listValue=”value” value=”{1,2}”/>
生成如下HTML代码:
<input type=”checkbox”name=”map” value=”1” checked=”checked”/><lable>aa<lable>
<input type=”checkbox”name=”map” value=”2” checked=”checked”/><lable>bb<lable>
<input type=”checkbox”name=”map” value=”3” /><lable>cc<lable>
listKey=“key”获得的是1,2,3值,并把其作为复选框中value的值,listValue=”value” 作为<lable>里面的值。value=”{1,2}”为选定的选项
3,如果集合里存放的是javabean
<%
Personperson1=new Person(1,”第一个”);
Personperson2=new Person(2,”第二个”);
List<Person>list=new ArrayList<Person>();
list.add(person1);
list.add(person2);
request.setAttribute(“persons”,list);
%>
<s:checkboxlist name=”beans” list=”#request.person”listKey=”personid” lisyValue=”name”/>
Person和name为Person的属性,生成如下HTML代码:
<inputtype=”checkbox” name=”beans” value=”1”/><lable>第一个</lable>
<inputtype=”checkbox” name=”beans” value=”2”/><lable>第二个</lable>
4.<s:checkboxlist label="请选择你喜欢的水果" list="{'apple','oranger','pear','banana'}"name="fruit">
</s:checkboxlist>
或者为:
<s:checkboxlistlabel="请选择你喜欢的水果" list="#{1:'apple',2:'oranger',3:'pear',4:'banana'}"name="fruit">
</s:checkboxlist>
这两种方式的区别:前一种根据name取值时取的是选中字符串的值;后一种在页面上显示的是value的值,而根据name取值时取的却是对应的key,这里就是1、2、3或4。
十四.<s:combobox>标签
combobox标签生成一个单行文本框和下拉列表框的组合。两个表单元素只能对应一个请求参数,只有单行文本框里的值才包含请求参数,下拉列表框只是用于辅助输入,并没有name属性,故不会产生请求参数。用法举例:
<s:combobox label="请选择你喜欢的水果" list="{'apple','oranger','pear','banana'}"name="fruit">
</s:combobox>
十五.<s:datetimepicker>标签
datetimepicker标签用于生成一个日期、时间下拉列表框。当使用该日期、时间列表框选择某个日期、时间时,系统会自动将选中日期、时间输出指定文本框中。用法举例:
<s:form action=""method="">
<s:datetimepickername="date" label="请选择日期"></s:datetimepicker>
</s:form>
十六.<s:select>,下拉选择框
select标签用于生成一个下拉列表框,通过为该元素指定list属性的值,来生成下拉列表框的选项。用法举例:
<s:select list="{'apple','oranger','pear','banana'}"
label="请选择你喜欢的水果"></s:select>
或者为:
<s:select list="fruit"list="#{1:'apple',2:'oranger',3:'pear',4:'banana'}"
listKey="key" listValue="value"></s:select>
十七.<s:radio>标签
radio标签的用法与checkboxlist用法很相似,唯一的区别就是checkboxlist生成的是复选框,而radio生成的是单选框。用法举例:
<s:radio label="性别" list="{'男','女'}"name="sex"></s:radio>
或者为:
<s:radio label="性别" list="#{1:'男',0:'女'}"name="sex">
</s:radio>
代码下载链接:点击打开链接
参考文档下载链接:点击打开链接
<%@ 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>zhangvalue的标签</title>
<meta http-equiv="Content-Type" content="html/text;charset=UTF-8">
<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">
</head>
<body>
<form >
<h1>zhangvalue的checkboxlist标签</h1>
<h3>checkboxlist(多选框)标签:用到list可以是指定的"</h3>
<s:checkboxlist name="b" label="选择你最喜欢的课程:"
labelposition ="top" list ="#{'java':'java','c++':'c++','javaee':'javaee','
database':'数据库' }"
listKey="key"
listValue="value"/></br>
<h3>checkboxlist标签:用到list可以不是指定的"</h3>
<s:checkboxlist name="c"
label="选一个你最喜欢的老师:" list ="sts"
listKey="sno" listValue="sname"/></br>
<h1>zhangvalue的select标签</h1>
<h3>select标签:指定list的,也可不指定"</h3>
<s:select
mutiple ="true"
list="sts" listkey="sno" listValue="sname"/>
sno:<s:textfield name="sno" />
<s:hidden name="sname" /></br>
<h1>zhangvalue的radio标签</h1>
<h3>radio(单选框)标签:指定list"</h3>
<s:radio name="c" list="sts" listkey="sno" listValue="sname"/></br>
<h1>zhangvalue的set标签</h1>
<h3>set标签:指定value的值"</h3>
<s:set var="c" value="33"/>
c:<s:property value="%{#c+1})"/>
c:<s:property value="#c+1"/></br>
<h1>zhangvalue的Date标签</h1>
<h3>Date标签:指定format="yyyy年MM月dd日"</h3>
<s:date name="d" format="YYYY-MM-dd"/>
</form>
<%-- <s:datetimepicker name="d" label ="选择时间"/> --%>
<h1>zhangvalue的bean标签</h1>
<h3>没有指定id属性,bean标签创建的Student对象被放到值栈的顶部</h3>
<s:bean name="org.soft.model.student">
<s:param name="sname" value="'zhangvalue'"/>
<s:param name="sno" value="'201322450805'"/>
用户名:<s:property value="sname"/><br> <!-- 可以正常输出sname属性 -->
邮箱:<s:property value="sno"/> <!-- 可以正常输出sno属性 -->
</s:bean>
<p>
用户名:<s:property value="sname"/><br> <!-- student对象已从栈顶删除,输出为空-->
学号:<s:property value="sno"/> <!-- student对象已从栈顶删除,输出为空-->
<h3>指定了id属性,bean标签创建的Student对象被放到值栈的顶部和OgnlContext中</h3>
<s:bean name="org.soft.model.Student" id="student">
<s:param name="sname" value="'zhangvalue'"/>
<s:param name="sno" value="'201322450805'"/>
用户名:<s:property value="sname"/><br> <!-- 可以正常输出sname属性 -->
学号:<s:property value="sno"/> <!-- 可以正常输出sno属性 -->
</s:bean></br>
<p>
<!-- 访问保存到OgnlContext中的student对象 -->
用户名:<s:property value="#student.sname"/><br> <!-- 可以正常输出student对象的sname属性 -->
学号:<s:property value="#student.sno"/></p> </br> <!-- 可以正常输出student对象sno属性 -->
<h1>zhangvalue的combobox标签</h1>
<s:combobox label="请选择你喜欢的老师" list="{'apple','oranger','pear','banana'}" name="fruit"/></br>
<h1>zhangvalue的iterator标签</h1>
<h3>zhangvalue的iterator标签</h3>
<table border ="1" width="200">
<s:iterator value="{'apple','orange','pear','banan'}" id="fruit" status="st">
<tr<s:if test="#st.even">style="background=color.silver"</s:if>>
<td><s:property value="fruit"/></td>
</tr>
</s:iterator>
</table>
<h1>zhangvalue的append标签</h1>
<s:append id="zhang">
<s:param value="{'apple','orange','pear','banana'}"/>
<s:param value="{'chinese','english','french'}"/>
</s:append>
<table border="1" width="400">
<s:iterator value="#zhang" id="fruit" status="st">
<tr <s:if test="#st.even">style="background-corlor:silver"</s:if>>
<td><s:property value="fruit"/></td>
</tr>
</s:iterator>
</table>
<h1>zhangvalue的merge标签</h1>
<s:set var="list1" value="{'one','two','three'}"></s:set>
<s:set var="list2" value="{'red','blue','black'}"></s:set>
<h3>用merge将多个列表组合在一起迭代</h3>
<s:merge var="alllist2">
<s:param value="#list1"></s:param>
<s:param value="#list2"></s:param>
</s:merge>
<s:iterator value="%{#alllist2}">
<s:property/>
</s:iterator>
<h1>zhangvalue的action标签</h1>
<h3>不执行结果,调用ZhangAction的doDefault()方法,获取请求对象中的greeting属性</h3>
<s:action name="zhangvalue!default" executeResult="false" namespace="/"/>
<!-- 获取请求对象中的greeting属性 -->
<s:property value="#attr.greeting"/>
<h1>zhangvalue的if-else if-else标签</h1>
<form action="hello">
<label for="name">请选择一个老师</label><br/>
<select name="name">
<option name="Mike">Mike</option>
<option name="Jason">Jason</option>
<option name="Mark">Mark</option>
</select>
<input type="submit" value="Say Hello"/>
<s:if test="name=='Mike'">
You have selected '白老师'.
</s:if>
<s:elseif test="name=='Jason'">
You have selected '曹老师'
</s:elseif>
<s:elseif test="name=='Mark'">
You have selected '王老师'
</s:elseif>
<s:else>
You have not selected '"王老师"' or '曹老师'or'白老师'.
</s:else>
</form>
<h1>zhangvalue的generator标签</h1>
<h3>利用generator拆分字符串,在外部用iterator迭代输出</h3>
<s:generator val="%{'red','blue','green','black'}" separator="," count="3" var="gen">
<s:iterator value="#gen">
<s:property/><br>
</s:iterator>
</s:generator>
<h3>自定义拆分字符串</h3>
<s:generator val="%{'red','blue','green','black'}" separator="," converter="%{myConverter}">
<s:iterator>
<s:property/><br>
</s:iterator>
</s:generator>
<h1>zhangvalue的url-a标签</h1>
<h4>使用标签a引用url标签生成URL</h4>
<s:a href="http://blog.csdn.net/zhangvalue">
zhangvalue的博客:请点击
</s:a>
<h1>zhangvalue的subset标签</h1>
<s:bean var="myDecider" name="example.Decider.OddDecider"></s:bean>
<s:set var="myList" value="{'1','2','3','4'}"></s:set>
<h3>利用subset从列表中截取子集,起始索引为2,截取3个元素</h3>
<s:subset source="#myList" start="2" count="3">
<s:iterator>
<s:property/>
</s:iterator>
</s:subset>
</body>
</html>
如果还需要看这个doc版本如下:
数据标签
一. <s:property>标签
property标签用于输出指定值:
(1)default:可选属性,如果要输出的属性值为null,则显示该属性指定值。
(2)escape:可选属性,指定是否格式化HTML代码。
(3)value:可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值。
(4)id:可选属性,指定该元素的标识。
例:<s:set name=”name” value=”baihuiru”/>
<s:set property value=”#name”/>
二.<s:set>标签
set标签用于将某个值放入指定范围内。例如application,session范围等。
(1)name:必选,重新生成新变量的名字。
(2)scope:可选,指定新变量的存放范围,该属性的取值一般为application,session,request,page或action。如果没有指定该属性,则默认放置在值栈中。
(3)value:可选,指定赋给新变量的值。如果没有指定该属性,则将值栈栈顶的值赋给新变量。
(4)id:可选,指定该元素的引用id。
<!-- 使用bean标签定义一个javaBean实例--!>
<s:bean name="lee.Person" id="p">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="29"/>
</s:bean>
将p放入默认范围内
<s:set value="#p" name="test"/>
<s:property value="#test.name"/> <br>
<s:property value="#test.age"/> <br>
三.<s:param>标签
param主要用于为其他标签提供参数。
(1)name:可选,指定需要设置参数的参数名。
(2)value:可选,指定需要设置参数的参数值。
(3)id:可选,指定该元素的引用id。
例如,若想在value属性中输入直接量,则可以这样写:
<s:param name="some">user</s:param>。
四.<s:bean>标签
bean标签主要用于创建一个JavaBean的实例。创建JavaBean实例时,可以在该标签内使用param标签为该JavaBean实例实例传入属性。如果需要使用param标签为该JavaBean实例传入属性值,则应该为该JavaBean类提供对应的setter方法。如果还希望访问该属性值,则必须为该属性提供getter方法。
(1)name:该属性是必选的,用来指定要实例化的JavaBean的实现类。
(2)id:该属性是可选的,如果指定了该属性,则该JavaBean实例会被放入Stack Context中,从而允许直接通过id属性来访问该JavaBean实例。
例子:
有一个Student类,该类中有name属性,并有其getter和setter方法:
public class Student {
privateString name;
publicString getName() {
returnname;
}
publicvoid setName(String name) {
this.name=name;
}
}
然后在JSP文件的body体中加入下面的代码:
<s:bean name="Student">
<s:paramname="name" value="'baihuiru'"/>
<s:property value="name"/>
</s:bean>
五.<s:action>标签
使用action标签可以允许在JSP页面中直接调用Action。该标签有以下几个属性:
(1)id:该属性是可选的,该属性将会作为该Action的引用标志id。
(2)name:该属性是必选的,指定该标签调用哪个Action。
(3)namespace:该属性是可选的,指定该标签调用的Action所在的namespace。
(4)executeResult:该属性是可选的,指定是否要将Action的处理结果页面包含到本页面。如果值为true,就是包含,false就是不包含,默认为false。
(5)ignoreContextParam:该属性是可选的,指定该页面中的请求参数是否需要传入调用的Action。如果值为false,将本页面的请求参数传入被调用的Action。如为true,不将本页面的请求参数传入到被调用的Action。
例:
<s:action name=”actinName”executeResult=”true”namespace=”/”>
<s:param name=”currentPage”value=”传递的值”></s:param>
</s:action>
六.<s:date>标签
date标签主要用于格式化输出一个日期。该标签有如下属性:
(1)format:该属性是可选的,如果指定了该属性,将根据该属性指定的格式来格式化日期。
(2)nice:该属性是可选的,该属性的取值只能是true或false,用于指定是否输出指定日期和当前时刻之间的时差。默认为false,即不输出时差。
(3)name:属性是必选的,指定要格式化的日期值。
(4)id:属性是可选的,指定引用该元素的id值。
(5)nice属性为true时,一般不指定format属性。因为nice为true时,会输出当前时刻与指定日期的时差,不会输出指定日期。当没有指定format,也没有指定nice="true"时,系统会采用默认格式输出。其用法为:
<s:date name="指定日期取值" format="日期格式"/><!-- 按指定日期格式输出 -->
<s:date name="指定日期取值" nice="true"/><!-- 输出时间差 -->
<s:date name="指定日期取值"/><!—默认格式输出-->
例子:
<s:datename="person.birthday" format="dd/MM/yyyy" />
<s:datename="person.birthday" format="%{getText('some.i18n.key')}" />
<s:datename="person.birthday" nice="true" />
<s:date name="person.birthday" />
七.<s:include>标签
include标签用于将一个JSP页面或一个Servlet包含到本页面中。该标签有如下属性:
(1)value:该属性是必选的,指定需要被包含的JSP页面或Servlet。
(2)id:该属性是可选的,指定该标签的id引用。
用法如下:
<s:include value="JSP或Servlet文件" id="自定义名称"/>
例:
<h2>使用s:clude标签来包含目标页面</h2>
<s:include value=”include-file.jsp”/>
<!-使用s:include标签来包含其他页面,并且传入参数-->
<s:include value=”include-file.jsp”/>
<s:param name=”author” value=”yeeku”/>
</s:include>
八.<s:url>标签
1,用于生成一个URL地址,
寻找url标签库<%@taglib url="/struts-tags" prefix="s"%>
2,例:<s:urlaction=”helloworld_add” namespace=”/test”><s:param name=”personid”value=”22”/></s:url>
生成类似路径:/struts/test/helloworld_add.action?personid=22
3, url标签有个特点:value=”#myurl”输出的是字符串,value=”%{#myurl}”输出的才是ognl表达式。
例:<s:set name=”myurl” value=”http:/www.shop.net”/>
<s:url value=”#myurl” /><br>
<s:urlvalue=”%{#myurl}” />
输出结果:
#myurl
http:/www.shop.ne
控制标签
九.<s:if>/<s:elseif>/<s:else>标签
这3个标签可以组合使用,但只有if标签可以单独使用,而elseif和else标签必须与if标签结合使用。if标签可以与多个elseif标签结合使用,但只能与一个else标签使用。其用法格式如下:
<s:set name="month" value="1" />
< s:if test="#month>0 &&month<=3">
第一季度
</s:if>
< s:elseif test="#month>3 &&month<=6">
第二季度
</s:elseif>
< s:elseif test="#month>6 &&month<=9">
第三季度
</s:elseif>
< s:elseif test="#month>9 &&month<=12">
第四季度
</s:elseif>
< s:else> 输入错误 </s:else>
十.<s:iterator>标签
Iterator标签用于对集合进行迭代,这里的集合包含List,Set和数组
例:<s:setname=”list” value=”{‘aa’,’bb’,’cc’}”/>
<s:iteratorvalue=”#list” status=”st”>
<fontcolor=<s: if test=”#st.odd”>green</s:else>blue</s:else>>
<s:property /></font><br>
</s:iterator>
(1)value: 可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。
(2)id:可选属性,指定集合里元素的id(已被标注为过时)。
(3)status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
int getCount(),返回当前迭代了几个元素。
int getIndex(),返回当前迭代元素的索引。
bolean isEven(),返回当前被迭代元素的索引是否为偶数
boolean isOdd(),返回当前被迭代元素的索引是否为奇数
boolean isFirst(),返回当前被迭代元素是否为第一个元素
boolean isLast(),返回当前被迭代元素是否为最后一个元素
</s:else>
十一,<s:append>标签
用于将多个集合对象拼接在一起,必需指定一个id属性,以确定拼接生成的新属性的名称
例:<%@ page language="java"pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags"prefix="s" %>
<html>
<head>
<title>控制标签</title>
</head>
<body>
<s:appendid="newList">
<s:paramvalue="{'apple','orange','pear','banana'}"/>
<s:param value="{'chinese','english','french'}"/>
</s:append>
<table border="1"width="200">
<s:iteratorvalue="#newList" id="fruit" status="st">
<tr <s:iftest="#st.even">style="background-color:silver"</s:if>>
<td><s:propertyvalue="fruit"/></td>
</tr>
</s:iterator>
</table>
</body>
</html>
十二.<s:merge>标签
与<s:append>标签用法相似,只是采用的拼接方式不同。假设有2个集合,第一个集合包含3个元素,第二个集合包含2个元素,分别用append标签和merge标签方式进行拼接,它们产生新集合的方式有所区别。
大部分的表单标签和HTML表单元素是一一对应的关系,如下面的代码片段:
<s:form action="login.action" method="post"/>
对应着:
<form action="login.action"method="post"/>
<s:textfield name="username" label="用户名" />
对应着:
用户名:<input type="text" name="username">
<s:password name="password" label="密码"/>
对应着:
密码:<input type="password" name="pwd">
还有下面这种情况,如果有这样一个JavaBean类,类名为“User”,该类中有两个属性:一个是username;另一个是password,并分别生成它们的getter和setter方法,在JSP页面的表单中可以这样为表单元素命名:
<s:textfield name="user.username" label="用户名" />
<s:password name="user.password" label="密码"/>
表单标签
十三,<s:checkboxlist>复选框
1.如果集合为list
<s:checkboxlist name=”list” list=”{‘a’,’b’,’c’,’d’}”value=”{‘a’,’b’}”/>
生成如下HTML代码:
<inputtype=”checkbox” name=”list” value=”a”checked=”checked”/><lable>a<lable>
<input type=”checkbox” name=”list” value=”b”checked=”checked”/><lable>b<lable>
<input type=”checkbox” name=”list”value=”c” /><lable>c<lable>
<input type=”checkbox”name=”list” value=”d” /><lable>a<lable>
2,如果集合为MAP
<s:chckboxlist name=”map”list=”#{1:’aa’,2:’bb’,3:’cc’}” listKey=”key” listValue=”value” value=”{1,2}”/>
生成如下HTML代码:
<input type=”checkbox”name=”map” value=”1” checked=”checked”/><lable>aa<lable>
<input type=”checkbox”name=”map” value=”2” checked=”checked”/><lable>bb<lable>
<input type=”checkbox”name=”map” value=”3” /><lable>cc<lable>
listKey=“key”获得的是1,2,3值,并把其作为复选框中value的值,listValue=”value” 作为<lable>里面的值。value=”{1,2}”为选定的选项
3,如果集合里存放的是javabean
<%
Personperson1=new Person(1,”第一个”);
Personperson2=new Person(2,”第二个”);
List<Person>list=new ArrayList<Person>();
list.add(person1);
list.add(person2);
request.setAttribute(“persons”,list);
%>
<s:checkboxlist name=”beans” list=”#request.person”listKey=”personid” lisyValue=”name”/>
Person和name为Person的属性,生成如下HTML代码:
<inputtype=”checkbox” name=”beans” value=”1”/><lable>第一个</lable>
<inputtype=”checkbox” name=”beans” value=”2”/><lable>第二个</lable>
4.<s:checkboxlist label="请选择你喜欢的水果" list="{'apple','oranger','pear','banana'}"name="fruit">
</s:checkboxlist>
或者为:
<s:checkboxlistlabel="请选择你喜欢的水果" list="#{1:'apple',2:'oranger',3:'pear',4:'banana'}"name="fruit">
</s:checkboxlist>
这两种方式的区别:前一种根据name取值时取的是选中字符串的值;后一种在页面上显示的是value的值,而根据name取值时取的却是对应的key,这里就是1、2、3或4。
十四.<s:combobox>标签
combobox标签生成一个单行文本框和下拉列表框的组合。两个表单元素只能对应一个请求参数,只有单行文本框里的值才包含请求参数,下拉列表框只是用于辅助输入,并没有name属性,故不会产生请求参数。用法举例:
<s:combobox label="请选择你喜欢的水果" list="{'apple','oranger','pear','banana'}"name="fruit">
</s:combobox>
十五.<s:datetimepicker>标签
datetimepicker标签用于生成一个日期、时间下拉列表框。当使用该日期、时间列表框选择某个日期、时间时,系统会自动将选中日期、时间输出指定文本框中。用法举例:
<s:form action=""method="">
<s:datetimepickername="date" label="请选择日期"></s:datetimepicker>
</s:form>
十六.<s:select>,下拉选择框
select标签用于生成一个下拉列表框,通过为该元素指定list属性的值,来生成下拉列表框的选项。用法举例:
<s:select list="{'apple','oranger','pear','banana'}"
label="请选择你喜欢的水果"></s:select>
或者为:
<s:select list="fruit"list="#{1:'apple',2:'oranger',3:'pear',4:'banana'}"
listKey="key" listValue="value"></s:select>
十七.<s:radio>标签
radio标签的用法与checkboxlist用法很相似,唯一的区别就是checkboxlist生成的是复选框,而radio生成的是单选框。用法举例:
<s:radio label="性别" list="{'男','女'}"name="sex"></s:radio>
或者为:
<s:radio label="性别" list="#{1:'男',0:'女'}"name="sex">
</s:radio>
相关文章推荐
- Spring MVC 配置 druid 数据源实例
- Spring整合Junit进行单元测试
- JAVA获取随机数
- 单个工程中Spring+Mybatis连接多个数据库的配置(个人分享版本)
- 关于spring事务回滚的处理2、3事
- eclipse提示workspace无法打开的问题
- spring的isotion的属性的特征
- 获取JAVA文件路径(包括服务器环境文件路径)
- java Vamei快速教程15 IO基础
- java中有关“变量”内存分配问题
- java IO输入输出流详解
- java ee web开发学习笔记
- Spring MVC前台属性数据的传递和后台属性数据的接收
- 从头认识java-4.9 枚举类型
- java项目中pdf转图片格式(jpg)
- 从头认识java-4.9 枚举类型
- ubuntu安装eclipse后菜单栏下拉失效
- jar文件操作--获取jar包内的文件夹
- Spring MVC 3.2 技术预览(三):动手写一个异步Controller方法
- java synchronized详解