struts2标签大全
struts2标签大全详解
详细的说明了struts2所有标签由整理版权属 以及原作者。
由于标签太多难做目录索引,如果你觉得有目录索引更好,请到/p/myjdemo/downloads/list 下载CHM版本的Struts2标签详解,谢谢。
aa标签创建一个HTML超链接,等价于HTML 的<a href=""....示范代码:<s:a href="login.action">登陆</s:a>action使用action标签可以允许在JSP页面中直接调用Action,因为需要调用Action,故可以指定需要被调用Action的name以及namespace。
如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图支援)包含到本页面中来。
action标签的属性:id:可选属性,该属性将会作为该Action的引用IDname:必填属性,指定该标签调用哪个Actionnamespace:可选,指定该标签调用的Action所在的namespace. executeResult:可选,指定是否要将Action的处理结果页面包含到本页面。
默认是false,即不包含ignoreContextParams:可选,它指定该页面中的请求参数是否需要传入调用的Action、默认是false,即将本页的请求参数传入被调用的Action。
下面是本示例应用中的Action类,包含连个处理逻辑。
代码如下public class TagAction extednds ActionSupport{//封装用户请求参数的author属性private String author;//author的get和set的方法,省略……public String execute() throws Exception{return "done";}public String login() throws Exception{ServletActionContext.getRequest().setAttribute("author",getAuthor()); return "done";}}上面的Action类包含两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。
Struts2标签库
method
否
指定使用Action旳措施
encode
否
指定是否需要对祈求参数进行编码
includeContex t
否
指定是否需要将目前上下文涉及在URL地址中
anchor id
否
指定URL旳锚点
否
指定该url元素旳引用ID,使用该属性时,生成旳URL不16会 在页面上输出,但能够引用
<h3>s:url生成一种URL地址</h3> 指定value属性旳形式,生成相对途径<br /> <s:url value="reg.action" /> 指定value属性旳形式,生成绝对途径<br /> <s:url value="/reg.action" /><hr /> 指定action属性,而且使用param传入参数旳形式<br /> <s:url action="reg">
<s:param name="method" value="'list'" /> </s:url> 指定action属性,和namespace联合使用<br /> <s:url action="reg" namespace="/admin">
struts2资料2
Struts2 标签库详解Struts2标签库包括:OGNLStruts2标签分类控制标签:(if, elseif,else, iterator, append, merge, generator, subset, sort)数据标签:(bean, param,date, debug, include, set, url, push)OGNLObject-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性:,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
Struts2默认的表达式语言是OGNLOGNL的符号--#:1、访问OGNL上下文和Action上下文,#相当于ActionContext.getContext() .2、构造Map用于过滤和投影(projecting)集合?——所有匹配选择逻辑的元素^——只提取符合选择逻辑的第一个元素$——只提取符合选择逻辑的最后一个元素范例:<s:iterator value="#{'china':'中国','usa':'美国','e':'俄国'}" var="c"><s:property value="#c.key"/>--<s:propertyvalue="#c.value"/><br/></s:iterator>范例:<s:property value="#attr.list.{sname}[0]"/><s:property value="#attr.list.{$#this.sid== 3}.{sname}[0]"/>支持对象方法调用:<s:property value="#attr.p.doSomeThing('李四')"/>调用保存在pageContext中的Student对象的doSomeThing()[N]语法:从ValueStack的第N个位置开始取值top关键字:取出最顶端的对象示例::<s:push value="'阿拉伯联合酋长国'"><s:property value="[0].top"/></s:push>从ValueStack中的第0个位置开始取出最顶部的对象,返回为”阿拉伯联合酋长国”Struts2标签分类1.分类:Struts2标签库:用户界面标签库(表单/非表单标签库),非用户界面标签库(控制标签库,数据访问标签库),ajax支持标签库2.导入taglib<%@taglib prefix=“s”uri=“/struts-tags” %>控制标签1、条件标签if…elseif…else主要属性:: test : 测试条件范例:<%! Random rnd = newRandom(); %><% int n = rnd.nextInt(200);pageContext.setAttribute("n", n); %><s:if test="#attr.n % 7 == 0">恭喜,您中了一等奖! </s:if><s:elseif test="#attr.n % 5 ==0">恭喜,您中了二等奖! </s:elseif><s:else>欢迎惠顾!</s:else>2、迭代标签iterator用于循环数组,集合和Map属性:value:数组,集合或Mapvar:当前元素status:当前元素的状态index,count,even,odd,first,last示例:遍历List<s:iterator value="{'中华人民共和国', '美利坚合众国', '阿拉伯联合酋长国'}" var="cur"status="st"><s:property value="#st.count"/><s:property value="#cur"/><br/></s:iterator>遍历Map<s:iterator value="#{1: '中国', 2: '美国', 3: '日本'}" var="cur"><s:property value="#cur.key"/><s:property value="#cur.value"/><br/></s:iterator>3、集合合并标签append和merge将多个集合合并成一个集合属性::var - 新集合的名称示例:<s:appendvar="newCollection"><s:param value="{'中国', '美国', '日本'}"></s:param><s:param value="{'德国', '泰国', '新加坡'}"></s:param></s:append><s:iterator value="#newCollection"var="cur"><s:property value="#cur"/><br/></s:iterator>注:merge用法和append相同,结果的组织不一样.4、字符串分割标签generator将一个字符串按照指定分隔符分割成一个字符串数组separator: 分隔符val(value): 字符串count:字符串數組中元素個數示例:<s:generator separator=","val="'中,华人,民共和,国'" var="arr"/><s:iterator value="#arr"var="cur"><s:property value="#cur"/><Br/></s:iterator>5、集合子集标签subset从集合中取出一个子集,注意:子集被放在值栈的顶部,subset标签执行完后子集自动移除属性::source: 集合start: 起始索引count: 子集中元素个数示例:<s:subset source="{'中国', '美国', '日本', '德国', '泰国', '新加坡'}" start="1"count="3"><s:iterator var="cur"><s:property value="#cur"/></s:iterator></s:subset>6、排序标签sort根据定义的排序规则,对集合中的元素进行排序,排序后生成的新的集合放在值栈顶部,标签结束后自动删除.属性::comparator: 实现Comparator的类source: 集合示例:<s:bean name="com.aptech.sorted.LengthSorted"var="ls“/><s:sort comparator="#ls"source="{'中1','88w','777','6666'}"><s:iterator><s:property/><br/></s:sort>数据标签1、设置变量标签set用于设置一个新变量,并将新变量放入指定的作用域中属性:Var: 新变量的引用Value:值示例:<s:set var="v1"value="'中华人民共和国'" scope="page"></s:set><s:property value="#attr.v1"/>注:如果不指定,默认放在Stack Context中2、栈顶置值标签push将某个值置于值栈的顶部,标签结束后,将从值栈中移除.属性:value: 即值示例:<s:push value="'中华人民共和国'" ><s:property/></s:push>3、javabean创建标签bean用于创建javabean的实例,如果设置了var值,则存于Stack Context,否则,标签结束后自动移除. 属性:name: javabean类名(带包)var: 名称示例:<s:bean name="com.aptech.entity.Student"var="stu"><s:param name="sid">1</s:param><s:param name="sname">张三好</s:param><s:param name="sbirthday">2009-9-9</s:param></s:bean><s:property value="#stu.sbirthday"/>4、日期格式化标签date格式化日期并输出属性:name:日期format:格式化字符串示例:<%pageContext.setAttribute("d", new Date()); %><s:date name="#attr.d"format="yyyy年MM月dd日HH时mm分ss秒"/> 5、调试标签debug用于当前环境下Value Stack和stackcontext中保存的数据6、资源包含标签include用于将一个html,jsp或servlet包含到当前页面中,使用param传递参数属性:value:包含页面名称示例:<s:include value="MyHtml.html"></s:include>7、URL生成标签url生成URL地址,可以通过param标签传递请求参数,如果参数为中文,自动编码属性:value: url值action: action名称,自动加上.action示例:<s:url value="control.jsp"var="url"><s:param name="id">中华人民共和国</s:param></s:url><a href="<s:propertyvalue="#url" />">链接</a><s:url action="test"var="url2"></s:url><s:property value="#url2"/>8、数据输出标签property用于输出值栈,Stack Context中的数据属性:value:要输出的值如果输出值栈中的值,不用#如果输出Stack Context中的值,要用#如果省略value,表示取出值栈的栈顶对象输出总结OGNL是标签的基础,要理解OGNL的基本使用,在struts2中,OGNL必须和标签紧密配合控制标签包含一组条件判断标签和一组集合遍历和操作标签数据标签包含一组数据访问相关的标签。
struts2_Tags
Struts2___Tags主要包括:Generic Tags(通用标签)Data TagsControl TagsUI Tags(UI标签)Form TagsNon-from TagsAjax TagsData Tags:property标签用于输出OGNL表达式的值ername:<s:property value="ername"/>username:<s:property value="username"default="没有找到对应属性时的默认值"/>字符串值:<s:property value="'username'"/>设置HTML标记:<s:property value="'<hr/>'" escapeHtml="false"/>◆set标签赋值给指定范围的变量var 指定变量名value 变量值scope 指定范围application, session, request, page, action(默认)<!-- 将OGNL表达式ername的值保存默认范围名为yourname的变量中,默认action范围即ActionContext--><s:set var="yourname"value="ername"/><h3>从action上下文中取出yourname</h3><s:property value="#yourname"/><br><h3>从请求范围中取出yourname</h3><s:property value="#request.yourname"/>◆bean标签用来创建JavaBean,放置到值栈的顶部或ActionContext中name属性必须指定javaBean的全路径类名var属性设置保存在ActionContext中的名称param标签为JavaBean的属性赋值<h3>没有指定var属性,bean标签创建的UserVO对象被放到值栈的顶部,标签结束从栈顶删除</h3> <s:set var="exp" value="'bean标签的使用'"socpe=”session”/><s:bean name="erVO"><s:param name="username"value="%{'张老三'}"/><s:param name="address"value="%{addr}"/><s:param name="explain"value="%{#session.exp}"/>用户名:<s:property value="username"/><br>地址:<s:property value="address"/><br>说明:<s:property value="explain"/><br></s:bean>用户名:<s:property value="username"/> <!-- UserVO对象已从栈顶删除,输出为空-->地址:<s:property value="address"/><h3>指定了var属性,bean标签创建的UserVO对象被放到值栈的顶部和ActionContext中</h3> <s:bean name="erVO"var="user"><s:param name="username"value="'张老三'"/><s:param name="email">zhangsan@</s:param>用户名:<s:property value="username"/><br>邮箱:<s:property value="email"/></s:bean><!-- 访问保存到ActionContext中的user对象-->用户名:<s:property value="#ername"/><!-- 可以输出userVO的username -->邮箱:<s:property value="#user.email"/>url标签: 用于生成url字符串%{}用法表示OGNL解析{}中字符串%{}能够解析这个字符串指定的变量或方法(在大多数标签中可以使用)即把此字符串当成OGNL表达式解析<s:set name="likes"value="#{'one':'football', 'two':'sleep'}" /><s:url value="%{#likes['one']}"/>|<s:url value="#likes['one']"/><h3>使用当前页面的URL生成的URL</h3><a href="<s:url/>">GO</a><hr/><h3>使用namespace和action属性的值生成的url</h3><s:set var="tagUrl"value="'tags_data_url.action'"/><s:url action="%{#tagUrl}"namespace="/tags"/><br/><a href="<s:url action='tags_data_url'namespace='/tags'/>">to action </a> <s:property value="#request.welcome"/><hr/><h3>使用forceAddSchemeHostAndPort属性强制添加scheme、主机和端口</h3><s:url value="/ch5/data/tags_url.jsp"forceAddSchemeHostAndPort="true"/><br/><a href='<s:url value="/ch5/data/tags_url.jsp"forceAddSchemeHostAndPort="true"/>'>to tags_url.jsp</a><hr/><h3>使用嵌套的param标签附加请求参数<br><s:url value="tags_data_url.action"><s:param name="id"value="888"/><s:param name="page"value="1"/></s:url></h3><h3>使用var属性和escapeAmp属性,在url标签结束后使用property标签输出生成的URL</h3><!-- 使用var属性url不会输出被保存到OgnlContext中escapeAmp属性指定&是否替换&符号<s:url value="tags_data_url.action"var="urlTag"escapeAmp="true"><s:param name="id"value="888"/><s:param name="page"value="1"/></s:url><s:property value="#urlTag"/>action标签: 用于在jsp页面直接调用actionname action的名称executeResult 是否执行action的Result 并将result页面包含在本页面<h3>不执行结果,调用tags_action的doShow()方法,获取请求对象中的welcome属性</h3> <s:action name="tags_action.action!show"executeResult="false"namespace="/tags"/><s:property value="#request.welcome"/><!-- 获取请求对象中的welcome属性--><h3>执行结果,并通过嵌套的param标签,设置action的ername和email属性</h3> <s:action name="tags_action!display"executeResult="true"namespace="/tags"><s:param name="ername"value="'张老三'"/><s:param name="userVO.email"value="'zhangsan@'"/></s:action>Control Tagss:if s:else s:elseif 用于条件判断<s:if test="#parameters.ids[0]!=null">id!=null</s:if><s:else>id==null</s:else>性别:<s:if test='%{userVO.sex=="M"}'>男</s:if><s:else>女</s:else>您属于:<s:if test="userVO.age < 30">青年</s:if><s:elseif test="userVO.age >= 30 && userVO.age < 50">中年</s:elseif> <s:else>老年</s:else>iterator标签用于迭代Collection、数组、Map、Enumeration、Iteratorvalue属性可以自定义变量值,也可以使用OGNL表达式取action上下文中的变量<h3>迭代列表,不使用status属性</h3><s:iterator value="{'张老三', '张小三', '张老二'}"><s:property/>|</s:iterator><h3>迭代列表,使用status属性</h3><table border="1"height="300"width="900"><th>当前元素</th><th>当前迭代的元素的总数</th><th>当前迭代的元素的索引</th><th>当前迭代的元素是否是偶数</th><th>当前迭代的元素是否是奇数</th><th>当前迭代的元素是否是第一个元素</th><th>当前迭代的元素是否是最后一个元素</th></tr><s:iterator value="{'张老三', '张小三', '张老二'}"status="status"> <tr><td><s:property/></td><td><s:property value="#status.count"/></td><td><s:property value="#status.index"/></td><td><s:property value="#status.even"/></td><td><s:property value="#status.odd"/></td><td><s:property value="#status.first"/></td></tr></s:iterator></table><h3>迭代Map,不使用status属性</h3><s:iterator value="#{'first':'张老三', 'second':'张小三', 'third':'张老二'}"> <s:property value="key"/>:<s:property value="value"/><br> </s:iterator>generator标签: 用于按指定分隔符,拆分字符串为迭代器<h3>使用generator标签拆分一个字符串,生成迭代器对拆分后的子串进行迭代</h3><s:generator val="userVO.likes[0]"separator=","><s:iterator><s:property/><br></s:iterator></s:generator><h3>使用count属性指定在生成的迭代器中可用的元素数量</h3><!-- 由于count属性设置为2,因此生成的迭代器中只有2个元素可用--><s:generator separator=","val="userVO.likes[0]"count="2"> <s:iterator><s:property/><br></s:iterator></s:generator><h3>使用var属性,将生成的迭代器保存到pageContext对象中</h3><s:generator separator=";"val="'张老三; 张小三; 张老二'"var="names"/> <s:iterator value="#names"><s:property/><br></s:iterator>sort标签:对一个列表进行排序<!--定义比较器--><s:bean name="org.struts2.util.StringComparator"var="myComparator"/><s:sort source="users"comparator="#myComparator"><s:iterator><s:property/><br/></s:iterator></s:sort>模板template和主题 theme模板template定义了标签上的显示风格的模板文件,如:form.ftl submit.ftl通常使用jsp、 Velocity、FreeMarker编写主题 theme一系列具有共同外观的 template组织在一起形成一个主题Struts2内置了4种主题1.simple2.xhtml(默认) 可以通过constant覆盖原来的默认值如:<constant name="struts.ui.theme" value="simple" /> 3.css_xhtml4.ajaxstruts2 的UI标签都是基于主题和模板对于struts2 theme(主题) 一般建议设为simple自己通过css来控制页面显示样式<s:head />用于输出对应主题的JavaScript、CSS<%-- 以下是xhtml主题下form的显示--%><s:head theme="xhtml"/><style type="text/css"><%-- 通过样式覆盖原来xhtml主题生成的table样式需要查看页面源码获取样式名称--%>.wwFormTable {border:black 1px dotted;}</style></head><body><s:form action="tags_theme"theme="xhtml"namespace="/tags"><s:textfield name="username"label="用户名"required="true"/><s:submit/></s:form></body>Form Tags:<s:form action="tags_form"theme="xhtml"method="post"namespace="/tags"><s:hidden name="erId"/><s:textfield name="ername"label="用户名"required="true"/><s:password name="userVO.password"label="密码"required="true"/><s:password name="userVO.confirmPwd"label="重复密码"required="true"/><s:textfield name="userVO.age"label="年龄"/><s:textfield name="userVO.email"label="Email"/><s:textfield name="userVO.birthday"label="生日"/><s:radio name="userVO.sex"label="性别"list="#{'M':'男','F':'女'}" /><s:checkboxlist name="userVO.likes"label="爱好"list='{"踢球","吃饭","编程","睡觉"}'/><s:select name="cation"label="学历"headerKey="-1"headerValue="--------请选择学历--------"list='{"高中","大学","硕士","大专"}'/><s:combobox name="userVO.position"label="职位"list='{"工程师","项目经理","技术总监","技术支持"}'headerValue="--------请选择职位--------"headerKey="-1"/><s:select list="categories"name="userVO.categoryId"label="版块"listKey="categoryId"listValue="categoryName"headerKey="-1" headerValue="--------请版块--------"/><s:textarea name="userVO.explain"label="个人说明"cols="30"rows="8"/><tr><%--submit标签说明:可以通过method属性指定提交的方法名也可以通过name属性指定前缀:方法名的形式来指定提交的action或方法来覆盖form中的action属性值--%><td align="right"><s:submit value="submit"theme="simple"/><s:submit value="show"theme="simple"name="method:showUserInfo"/> </td><td><s:submit value="save"theme="simple"method="saveUser"/><s:submit value="other_action"theme="simple"name="redirect:tags_other"/><s:reset value="重置"theme="simple"/></td></tr></s:form>以上示例参见ch5。
【IT专家】Struts2(五)常用标签之数据标签
本文由我司收集整编,推荐下载,如有疑问,请与我司联系Struts2(五)常用标签之数据标签2017/08/01 0 数据标签1 property标签property标签的主要属性:value:用来获取的OGNL表达式,如果value属性没有指定,那么将会被设定为top,也就是返回位于栈最顶端的对象。
default:如果按照value属性指定的OGNL求后返回的是空,但是你仍然希望输出某些内容,那么就可以使用default属性来指定这些内容escape:是否转义HTML,默认为true escapeJavaScript:是否转义JavaScript,默认为false eg: %@ taglib prefix= s uri= /struts-tags % % request.setAttribute( request , 请求的属性% 输出value :s:property value= #request[‘request’] / br 输出缺省:s:property value= #request[‘request2’] default= 缺省/ br 输出栈顶的对象:s:property/ eg: %@ taglib prefix= s uri= /struts-tags % s:property value= ‘ hr ‘ / s:property value= ‘ hr ‘ escape= false / 注意1 s:property value= ‘ hr ‘ / 中的value里面的为’ hr ‘,这对单引号的意思是,单引号里面的东西不按照OGNL表达式来解析,可以直接看成一个字符串。
2 你会发现,转义的那个输出变成了“ hr ”,不转义的那个是直接输出成” hr ”,其实转义,就是把HTML中的一些特殊字符用已经定义好的实体进行替换的过程,常见的HTML转移字符如下列表:2 set标签1:功能:对设置的表达式进行求,并将结果赋给特定作用域中的某个变量。
第15章struts2标签讲解
Struts标签:1.通用标签:(1)property(2)bean(3)param(4)debug2.控制标签:(1)if elseif else(2)iterator一、property标签类似于上节课的例子,1.在WebRoot下新建一个index_tags.jsp:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+req uest.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN"><html><head><title>My JSP 'index.jsp' starting page</title></head><body>访问属性:<ahref="http://localhost:8080/ch2_example1/test/tags.action ?username=aaa&password=bbb">tags</a></body></html>2.新建一个my.tags.TagsAction:package my.tags;import com.opensymphony.xwork2.ActionSupport;public class TagsAction extends ActionSupport{private String username;private String password;public String execute(){this.addFieldError("fielderror.test", "wrong!");return SUCCESS;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}3.修改struts.xml:<package name="mypack" namespace="/test"extends="struts-default"><action name="tags" class="my.tags.TagsAction" method="execute"><result name="success">/WEB-INF/page/tags.jsp</result></action></package>4.在WEB-INF/page下新建tags.jsp:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'tags.jsp' starting page</title></head><body><ol><li>property:<s:property value="username"/></li><li>property赋值为字符串:<s:propertyvalue="'username'"/></li><li>property设为默认值:<s:property value="admin" default="管理员"/></li><li>property设定HTML:<s:property value="'<hr/>'"escape="true"/></li></ol></body></html>测试:在地址栏输入:http://localhost:8080/ch2_example1/index_tags.jsp点击超链接tags得到下面的结果:1.property:aaa2.property赋值为字符串:username3.property设为默认值:管理员4.property设定HTML:<hr/>解释:<li>property:<s:property value="username"/></li>这个用法上节课已经讲过,不解释了。
Struts2的OGNL标签详解
Struts2的OGNL标签详解一、Struts2可以将所有标签分成3类:UI标签:主要用于生成HTML元素的标签。
非UI标签:主要用于数据库访问,逻辑控制等标签。
Ajax标签:用于Ajax支持的标签。
对于UI标签,则有可以分为两类:表当标签:表单标签主要用与生成HTML页面的from元素,以及普通表单元素的标签。
非表单标签:非表单标签主要用于生成页面的树、Tab页等。
流程控制标签:主要包含用于实现分页、循环等流程的标签。
数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签。
Struts2标签库分类图:二、使用Struts2标签库的准备:1、在Web.Xml文件中增加标签库d定义。
(如果应用使用的是Servlet2.3以前)2、现在jsp中使用taglib编辑指令导入标签库,然后才可以使用标签。
三、Struts2的OGNL标签:OGNL是Object Graphic Navigation Language的缩写,它是一个开源项目。
Struts2框架使用OGNL作为默认的表达式语言。
在传统的OGNL表达式求值中,系统会假设系统只要一个根对象,但Struts2的Stack Context需要多个“根”对象,其中ValueStacke只是多个“根”对象的其中之一。
假设:使用标签OGNL表达式求值,不是用Struts2的OGNL表达式是求之。
如果系统的Context中包含两个对象:foo对象,它在Context中的名字为foo;bar对象, 并且它在Context中的名为bar。
将foo对象设置成Context的根对象。
返回foo.getBlah()方法的返回值#foo.blah返回bar.getBlah()方法的返回值#bar.blah可以看出ONGL表达式的语法非正常简洁。
Struts2不知根据表达式从ValueStack中取的对象,还可以直接从对象中获取属性。
Struts2提供了一个特殊的OGNL ProperAccessories(属性访问器),它可以自动搜寻栈内的所有实体(从上到下),直接找到求值表达式匹配的属性。
struts2标签详解
struts2标签详解收藏52、action前缀使用action前缀,取代form标签指定的action,导向到另一个action进行处理。
<s:form action="login"><s:textfield name="ername" label="用户名"></s:textfield><s:textfield name="user.password" label="密码"></s:textfield><s:submit value="登陆"></s:submit><s:submit value="注册" name="action:register"></s:submit></s:form>2、redirect前缀使用redirect前缀请求重定向到其他的url,甚至可以是web英语程序外部的url。
<s:form action="login"><s:textfield name="ername" label="用户名"></s:textfield><s:textfield name="user.password" label="密码"></s:textfield><s:submit value="登陆"></s:submit><s:submit value="搜索" name="redirect:"></s:submit></s:form>2、redirect-action前缀使用redirect-action前缀请求重定向到其他的action.<s:form action="login"><s:textfield name="ername" label="用户名"></s:textfield><s:textfield name="user.password" label="密码"></s:textfield><s:submit value="登陆"></s:submit><s:submit value="搜索" name="redirect-action:register"></s:submit></s:form>reset标签reset标签输出一个重置按钮名称必需默认类型描述type否inputString要使用的重置按钮的内容,input、button<s:reset value="重置"></s:reset><s:reset type="button" label="重置"></s:reset>updownselect标签updownselect标签创建一个带有上下移动的按钮的列表框,可以通过上下移动按钮来调整列表框的选项的位置。
struts标签
<h3>获取application中的对象的值</h3>
第一种方式:<s:property value="#er1.realName"/>
<br/>
第二种方式:<s:property value="#er1['realName']"/>
<br/>
第三种方式:<s:property value="#user1.realName"/>
<br/>
第四种方式:<s:property value="#user1['realName']"/>
<br/>
第五种方式:${er1.realName } || ${er1['realName'] }
<font color="red"><s:property value="#ent" />
</font>
</s:if>
<s:else>
<s:property value="#ent" />
</s:else>
</s:iterator>
第二种:map集合中的使用
<br/>
第二种方式:<s:property value="#er1['realName']"/>
第五种方式:${er1.realName } || ${er1['realName'] }
struts2,标签,表格
竭诚为您提供优质文档/双击可除struts2,标签,表格篇一:struts2常用标签总结struts2常用标签总结一介绍1.struts2的作用struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。
实现了更好的代码复用。
struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。
struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用。
包括最常用的jsp页面,也可以说Velocity和Freemarker等模板技术中的使用2.struts2分类(1)ui标签:(userinterface,用户界面)标签,主要用于生成html元素标签,ui标签又可分为表单标签非表单标签(2)非ui标签,主要用于数据访问,逻辑控制等的标签。
非ui标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出Valuestack中的值,完成国际化等功能的)(3)ajax标签3.struts2标签使用前的准备:(1)在要使用标签的jsp页面引入标签库:(2)在web.xml中声明要使用的标签这样是struts22.3.1.2版本的引入方式struts2org.apache.struts2.dispatcher.ng.filter.strutsprepa reandexecuteFilter4.标签的使用(1)property标签用于输出指定的值:以-->以上可以访问某一个包的类的属性的集中方式,study()是访问方法的方法,并输出。
以下用java代码代替的,访问某一个范围内的属性//采用pagecontext对象往page范围内存入值来验证#attr搜索顺序是从page开始的,搜索的顺序为:page,reques,session,application。
struts2(checkbox_radio_select)表单标签的应用及详细事例
一、表单标签_checkbox复选框如果集合为list<s:checkboxlist name="list"list="{'Java','.Net','RoR','PHP'}"value="{'Java','.Net'}"/>生成如下html代码:<input type="checkbox"name="list"value="Java" checked="checked"/><label>Java</label><input type="checkbox"name="list"value=".Net" checked="checked"/><label>.Net</label><input type="checkbox"name="list" value="RoR"/><label>RoR</label><input type="checkbox"name="list"value="PHP" /><label>PHP</label><input type="checkbox"name="list"value="PHP" /><label>PHP</label>************************************************ *****<br>如果集合为MAP<s:checkboxlist name="map"list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}"listKey="key"listValue="value"value="{1,2,3}"/>生成如下html代码:<input type="checkbox"name="map"value="1" checked="checked"/><label>瑜珈用品</label><input type="checkbox"name="map"value="2" checked="checked"/><label>户外用品</label><input type="checkbox"name="map"value="3" checked="checked"/><label>球类</label><input type="checkbox"name="map"value="4"/><label>自行车</label>******************************************************<br>如果集合里存放的是javabean(id和name为Person的属性)<%Person person1 = new Person(1, "第一个");Person person2 = 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.persons"listKey="id"listValue="name"/>生成如下html代码:<input type="checkbox"name=“beans" value="1"/><label>第一个</label><input type="checkbox"name=“beans" value="2"/><label>第二个</label>************************************************ ******<br>表单标签_radio单选框<a href="radio.jsp">测试</a><br>表单标签_select单选框<a href="select.jsp">测试</a>代码运行结果如下:----------------------------------------------------------------------------------------------------------------------------二、表单标签_radio下拉选择框如果集合里存放的是javabean(id和name为Person的属性) <%Person person1 = new Person(1, "第一个");Person person2 = new Person(2, "第二个");List<Person> list = new ArrayList<Person>();list.add(person1);list.add(person2);request.setAttribute("persons", list);%>< s:radio name="beans" list="#request.persons" listKey="id"listValue="name"/> 生成如下html代码:<input type="radio"name="beans"id="beans1" value="1"/><label>第一个</label><input type="radio"name="beans"id="beans2" value="2"/><label>第二个</label>************************************************ **************<br>该标签的使用和checkboxlist复选框相同。
5_Struts 2 标签_1
常用流程控制标签使用
iterator 使用{}产生list集合 使用#{}产生map集合 generator
if elseif else
merge param append
常用数据访问标签
action bean debug date
rnate3.2实现增删改查emp表中的 数据。 要求:
Struts 2标签使用基础
Struts 2中所有标签的属性分为2种类型
字符串类型(String) 对象类型(Object)
如果是字符串类型使用方式为:%{ognl} 如果是对象类型使用方式为ognl,如果使用%{ognl}方 式,%{}也会被忽略。 如果要使用字符串常量需要使用单引号或者双引号括起。
Struts 2 标签
主要内容
Struts 2标签概述 Struts 2标签使用基础 Struts 2通用标签
Struts 2标签概述
Struts 2框架的标签库简化了页面的输出,并支持更加复杂而 丰富的功能,相对于jstl。 Struts 2的标签分为2类: 通用标签 • 流程控制标签 • 数据访问标签 界面标签 • 主题与模板标签 • 表单标签 • 非表单标签 • Ajax标签
1. 2. 分页 使用Struts 2标签
struts2常用标签详解
struts2标签详解A:<s:a xhref=""></s:a>-----超链接,类似于html里的<a></a><s:action name=""></s:action>-----执行一个view里面的一个action<s:actionerror/>-----如果action的errors有值那么显示出来<s:actionmessage/>-----如果action的message有值那么显示出来<s:append></s:append>-----添加一个值到list,类似于list.add();<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajaxB:<s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值C:<s:checkbox></s:checkbox>-----复选框<s:checkboxlist list=""></s:checkboxlist>-----多选框<s:combobox list=""></s:combobox>-----下拉框<s:component></s:component>-----图像符号D:<s:date/>-----获取日期格式<s:datetimepicker></s:datetimepicker>-----日期输入框<s:debug></s:debug>-----显示错误信息<s:div></s:div>-----表示一个块,类似于html的<div></div><s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框E:<s:if test="#name=‟hujianqiang‟">asdfasdf</s:if><s:elseif test=""></s:elseif><s:else></s:else>-----这3个标签一起使用,表示条件判断F:<s:fielderror></s:fielderror>-----显示文件错误信息<s:file></s:file>-----文件上传<s:form action=""></s:form>-----获取相应form的值G:<s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用H:<s:head/>-----在<head></head>里使用,表示头文件结束<s:hidden></s:hidden>-----隐藏值I:<s:i18n name=""></s:i18n>-----加载资源包到值堆栈<s:include value=""></s:include>-----包含一个输出,servlet或jsp页面<s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入<s:iterator></s:iterator>-----用于遍历集合L:<s:label></s:label>-----只读的标签M:<s:merge></s:merge>-----合并遍历集合出来的值O:<s:optgroup></s:optgroup>-----获取标签组<s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框P:<s:param></s:param>-----为其他标签提供参数<s:password></s:password>-----密码输入框<s:property/>-----得到'value'的属性<s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性R:<s:radio list=""></s:radio>-----单选按钮<s:reset></s:reset>-----重置按钮S:<s:select list=""></s:select>-----单选框<s:set name=""></s:set>-----赋予变量一个特定范围内的值<s:sort comparator=""></s:sort>-----通过属性给list分类<s:submit></s:submit>-----提交按钮<s:subset></s:subset>-----为遍历集合输出子集T:<s:tabbedPanel id=""></s:tabbedPanel>-----表格框<s:table></s:table>-----表格<s:text name=""></s:text>-----I18n文本信息<s:textarea></s:textarea>-----文本域输入框<s:textfield></s:textfield>-----文本输入框<s:token></s:token>-----拦截器<s:tree></s:tree>-----树<s:treenode label=""></s:treenode>-----树的结构U:<s:updownselect list=""></s:updownselect>-----多选择框<s:url></s:url>-----创建urlStruts2常用的Ajax标签Struts2为了简化Ajax过程,提供了一些常用的Ajax标签,对于一些更复杂的Ajax通信过程,我们可以使用JSON插件来实现。
struts2常用表单标签
</head>
4.页面中使用
<sx:datetimepicker name="birthday" lable="请求时间" displayFormat="yy-MM-dd" />
doubleselect标签
{
return this.author;
}
}
package lee;
public class BookService
{
public Book[] getBooks()
{
return new Book[]
{
new Book("Spring2.0","李"),
除了这些属性之外,所有的表单元素标签都存在一个特殊的属性:form,这个属性引用表单元素所在的表单,通过该form属性,可以实现表单元素和表单之间的交互。例如,我们可以通过${parameters.form.id}来取得表单元素所在表单的ID。表单标签的通用属性有以下几类:
1,模板相关的通用属性:#34;J2EE","李"),
new Book("Ajax","李")
};
}
}
combobox标签
combobox标签生成一个单行文本框和下拉列表框的结合,但两个表单元素只对应一个请求参数,只有单行文本框里的值才包含请求参数,而下拉列表框则只是用于辅助输入,并没有name属性,也就不会产生请求参数。使用该标签时,需要指定一个list属性,该list属性指定的集合将用于生成列表框。例子如下:
struts2常用标签
Struts 1.x与Struts 2.0的标志库(Tag Library)作比较要在JSP中使用Struts1标签,需要先指明标签的引入:<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>……要在JSP中使用Struts2标签,需要先指明标签的引入:<%@ taglib prefix=”s” uri=”/struts-tags”%>非UI标签、UI标签(基于表单的UI标签和其他UI标签)1、非UI标签1)、if\elseif和else执行基本的条件流转例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Condition Flow</title></head><body><h3>Condition Flow</h3><s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" /> <s:if test="#name == 'Max'">Max's file here</s:if><s:elseif test="#name == 'Scott'">Scott's file here</s:elseif><s:else>Other's file here</s:else></body></html>Iterator2)、iterator用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ page import="java.util.List" %><%@ page import="java.util.ArrayList" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%List list = new ArrayList();list.add("Max");list.add("Scott");list.add("Jeffry");list.add("Joe");list.add("Kelvin");request.setAttribute("names", list);%><html><head><title>Iterator</title></head><body><h3>Names: </h3><ol><s:iterator value="#s" status="stuts"><s:if test="#stuts.odd == true"><li>White <s:property /></li></s:if><s:else><li style="background-color:gray"><s:property /></li></s:else></s:iterator></ol></body></html><!--1、此处的空property元素用于获得当前iterator的值2、status被设成stuts,在iterator的里面就可以通过#stuts取得IteratorStatus的对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要在jsp中使用Struts2的标志,先要指明标志的引入。
通过jsp的代码的顶部加入以下的代码:<%@taglib prefix="s" uri="/struts-tags" %>If elseif else描述:执行基本的条件流转。
参数:名称必需默认类型描述备注test是boolean决定标志里的内容是否显示的表达式else标志没有这个参数id否Object/String用来标识元素的id。
在UI和表单中为HTML的id属性例子:<s:set name="age" value="61"/><s:if test="${age > 60}">老年人</s:if><s:elseif test="${age > 35}">中年人</s:elseif><s:elseif test="${age > 15}" id="wawa">青年人</s:elseif><s:else>少年</s:else><s:set name="name" value="<%="'"+request.getParameter("name")+"'" %>"/><%System.out.println(request.getParameter("name"));%><s:if test="#name=='zhaosoft'">zhaosoft here</s:if><s:elseif test="#name=='zxl'">zxl here</s:elseif><s:else>other is here</s:else>Iterator(迭代)描述:用于遍历集合(java.util.Collection)或枚举值(java.util.iterator)参数名称必需默认类型描述status否String如果设置此参数,一个IteratorStatus的实例将会压入每一个遍历的堆栈value否Object/Stri要遍历的可枚举的ng(iteratable)数据源,或者将放入的新列表(List)的对想id否Object/String用来标识元素的id。
在ui和表单中为HTML的id属性I18n(国际化操作)描述:加载资源包到值堆栈。
它可以允许text标志访问任何资源包的信息。
而不只当前的action相关联的资源包。
名称必需默认类型描述name是Object/String 资源包的类路径(如com.xxxx.resources.Ap pMsg)id 否Object/String用来标识元素的id。
在ui和表单中为HTML的id属性Include描述:包含一个servlet的输出(servlet或jsp的页面)名称必需默认类型描述value时String要包含的jsp页面或servletid否Object/Stri用来标识元素的id。
在ngui和表单中为HTML的id属性param描述:属性是可选的,如果提供,会调用Component的方法,addParameter(String,Object),如果不提供,则外层嵌套标签必须实现UnnamedParametric接口。
Value的提供有两种方式,通过value属性或者标签中间的text,不同之处:<s:param name="name">zhaosoft</s:param>参数会以String的格式放入statck<s:param name="name" value="zhaosoft"/>该值会以ng.Object的格式放入statck名称必需默认类型描述name否String参数名value时String value表达式id否Object/Stri用来标识元素的id。
在ngui和表单中为HTML的id属性set描述:set标签赋予变量一个特定范围内的值。
当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到。
其在两种情况下非常有用:复杂的表达式很耗时(性能提升)或者很难理解(代码的可读性提高)参数:名称必需默认类型描述name是String变量名字scope否String变量作用域,可以为application,session,request,page,actionvalue否Object/Stri将会赋给变量的值ngid否Object/Stri用来标识元素的id。
在ui和表ng单中为HTML的id属性Text描述:支持国际化信息的标签。
国际化信息必须放在一个和当前action同名的resource bundle中,如果没有找到相应message,tag body将被当作默认的message,如果没有tag body,message的name会被作为默认message.名称必需默认类型描述name是String资源属性的名字id否Object/Stri用来标识元素的id。
在ui和表ng单中为HTML的id属性url描述:该标签用于创建url,可以通过”param”标签提供request参数。
当includeParams的值是all或get,param标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值。
UI标志单行文本框T extfield标签输出一个HTML单行文本输入控件,等价于HTML代码<input type=”text”>名称必需默认类型描述maxlengt否无Integer文本输入控件可以输入字符的h最大长度readonly否false Boolean当该属性为true时,不能输入size否无Integer指定可视尺寸id否Object/Stri用来标识元素的id。
在ui和表ng单中为HTML的id属性例子:<s:form action="register" method="post"><s:textfield name="username" label="用户名"></s:textfield></s:form>文本框区T extarea标签输出一个HTML多行文本输入控件,等价于HTML代码:<textarea />名称必需默认类型描述cols否无Integer列数rows否无Integer行数readonly否false Boolean当该属性为true时,不能输入wrap否false Boolean指定多行文本输入控件是否应该换行id否Object/String用来标识元素的id。
在ui和表单中为HTML的id属性例子:<s:textarea name="personal" cols="10" rows="5" label="个人简历"></s:textarea>下拉列表s:select 标签输出一个下拉列表框,相当于HTML代码中的<select/>名称必需默认类型描述list是无CellectionMapEnumeration Iteratorarray 要迭代的集合,使用集合中的元素来设置各个选项,如果list 的属性为Map则Map的key成为选项的value,Map的value会成为选项的内容listKey否无String指定集合对象中的哪个属性作为选项的valuelistValue否无String指定集合对象中的哪个属性作为选项的内容headerKe否无String设置当用户选择了header选y项时,提交的的value,如果使用该属性,不能为该属性设置空值headerVa否无String显示在页面中header选项内lue容emptyOpt否false Boolean是否在header选项后面添加ion一个空选项multiple否false Boolean是否多选size否无Integer显示的选项个数例子:<%@ page contentType="text/html;charset=GBK" %><%@ taglib prefix="s" uri="/struts-tags" %><h3>使用name和list属性,list属性的值是一个列表</h3><s:form><s:select label="最高学历"name="education"list="{'高中','大学','硕士','博士'}"/><h3>使用name和list属性,list属性的值是一个Map</h3><s:form><s:select label="最高学历" name="education" list="#{1:'高中',2:'大学',3:'硕士',4:'博士'}"/></s:form><h3>使用headerKey和headerValue属性设置header选项</h3><s:form><s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"headerKey="-1" headerValue="请选择您的学历"/></s:form><h3>使用emptyOption属性在header选项后添加一个空的选项</h3><s:form><s:select label="最高学历"name="education"list="{'高中','大学','硕士','博士'}"headerKey="-1" headerValue="请选择您的学历"emptyOption="true"/></s:form><h3>使用multiple属性设置多选</h3><s:form><s:select label="最高学历"name="education"list="{'高中','大学','硕士','博士'}"headerKey="-1" headerValue="请选择您的学历"emptyOption="true"multiple="true"/></s:form><h3>使用size属性设置下拉框可显示的选项个数</h3><s:form><s:select label="最高学历"name="education"list="{'高中','大学','硕士headerKey="-1" headerValue="请选择您的学历"emptyOption="true"multiple="true" size="8"/></s:form><h3>使用listKey和listValue属性,利用Action实例的属性(property)来设置选项的值和选项的内容</h3><s:form><s:select label="最高学历" name="education" list="educations"listKey="id" listValue="name"/></s:form>doubleselect标签doubleselect标签输出关联的两个HTML列表框,产生联动效果。