Struts2标签库详解

上传人:fgh****35 文档编号:201785686 上传时间:2023-04-20 格式:DOC 页数:22 大小:178.50KB
收藏 版权申诉 举报 下载
Struts2标签库详解_第1页
第1页 / 共22页
Struts2标签库详解_第2页
第2页 / 共22页
Struts2标签库详解_第3页
第3页 / 共22页
资源描述:

《Struts2标签库详解》由会员分享,可在线阅读,更多相关《Struts2标签库详解(22页珍藏版)》请在装配图网上搜索。

1、Taglib (Struts2标签库)-超链接,类似于html里的-执行一个view里面的一个action-如果action的errors有值那么显示出来-如果action的message有值那么显示出来-添加一个值到list,类似于list.add();-自动完成标签的内容,这个是ajaxb:-类似于struts1.x中的,javabean的值c:-复选框-多选框-下拉框-图像符号d:-获取日期格式-日期输入框-显示错误信息-表示一个块,类似于html的-双下拉框e:-这3个标签一起使用,表示条件判断f:-显示文件错误信息-文件上传-获取相应form的值g:-和标签一起使用h:-在里使用,表

2、示头文件结束-隐藏值i:-加载资源包到值堆栈-包含一个输出,servlet或jsp页面-获取form的一个输入-用于遍历集合l:-只读的标签m:-合并遍历集合出来的值o:-获取标签组-左右选择框p:-为其他标签提供参数-密码输入框-得到value的属性-value的值push到栈中,从而使property标签的能够获取value的属性r:-单选按钮-重置按钮s:-单选框-赋予变量一个特定范围内的值-通过属性给list分类-提交按钮-为遍历集合输出子集t:-表格框-表格-i18n文本信息-文本域输入框-文本输入框-拦截器-树-树的结构u:-多选择框-创建urlStruts2 Taglib抽象了不

3、同表示技术,现在Struts2主要支持三种表示技术:JSP,FreeMarker和Velocity。但部分的Tag在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。Tab可以分为两类:通用标签和UI标签。4.1节 通用标签通用标签用来在页面表示的时候控制代码执行的过程,这些标签也允许从Action或者值堆栈中取得数据。例如地域,JavaBeans,URLs,和action。控制标签控制程序执行,例如:if,else,iterator数据标签管理数据的取得和创建,例如:bean,push,i18n控制标签if标签 描述 If标签用来控制基本的条件处理流程,通常和else标签或者el

4、seif标签连用。参数名字是否必须默认值可否使用表达式类型描述id否是String用来表示该元素,对于UI和Form标签来说直接转变为HTML id属性test是是Boolean用来决定是否显示标签内部内容的表达式例子 Will Not Be Executed Will Be Executed Will Not Be ExecutedelseIf 标签参考if标签else 标签参考if标签append标签 描述用来做iterator标签的辅助,将不同iterator中的内容合在一个iterator中。参数名字是否必须默认值可否使用表达式类型描述id否是String用来保存结果iterator的

5、对象在value context中的名字。例子Action类public class AppendIteratorTagAction extends ActionSupport private List myList1; private List myList2; private List myList3; public String execute() throws Exception myList1 = new ArrayList(); myList1.add(1); myList1.add(2); myList1.add(3); myList2 = new ArrayList(); my

6、List2.add(a); myList2.add(b); myList2.add(c); myList3 = new ArrayList(); myList3.add(A); myList3.add(B); myList3.add(C); return done; public List getMyList1() return myList1; public List getMyList2() return myList2; public List getMyList3() return myList3; 标签使用 generator 标签(JSP Tag)描述从val属性生成一个itera

7、tor。参数例子例1:生成一个简单的iterator,并且使用iterator标签打印出内容。 例2:生成一个iterator,使用count属性。因为count属性值为3,所以只有前三个内容(aaa,bbb,ccc)在生成的iterator中。Generate an iterator with count attribute 例3:生成iterator,使用了id属性,之后生成的对象放在pageContext中,可以通过指定的id来访问。 例4:生成iterator,使用converter属性,这里的convertor仅仅将每一个对象添加了一个converter-前缀。 public cla

8、ss GeneratorTagAction extends ActionSupport . public Converter getMyConverter() return new Converter() public Object convert(String value) throws Exception return converter-+value; ; .iterator 标签描述迭代处理一个java.util.Connection或者java.util.Iterator对象参数名字是否必须默认值可否使用表达式类型描述id否是StringId,status否否是Boolean如果指定

9、,在循环的过程中会保留一个IteratorStatus类型的变量,该变量用来查询当前迭代的状态value否是String被迭代的对象例子例1: day is: 例2: Days of the week 例3: tr class=oddeven , merge 标签(同append?)描述参数例子sort 标签(JSP-Tag)描述对一个可以迭代的对象进行排序操作。 参数 名字是否必须默认值可否使用表达式类型描述Comparator是是java.util.Comparator排序用的比较器Source否是String排序对象例子例1: 例2:subset描述递归iterator的一部分参数名字是

10、否必须默认值可否使用表达式类型描述countFalse是IntegerIterator中被递归的一部分的item的数量Decider否是org.apache.struts2.util.SubsetIteratorFilter.Decider用来判断iterator中的item是否包含在最终的subset内部Source否是StringIterator的对象Start否是Integer开始位置例子Java类public class MySubsetTagAction extends ActionSupport public String execute() throws Exception l

11、= new ArrayList(); l.add(new Integer(1); l.add(new Integer(2); l.add(new Integer(3); l.add(new Integer(4); l.add(new Integer(5); return done; public Integer getMyArray() return a; public List getMyList() return l; public Decider getMyDecider() return new Decider() public boolean decide(Object elemen

12、t) throws Exception int i = (Integer)element).intValue(); return (i % 2) = 0)?true:false); ; 数据标签TODO 完成如下数据标签数据标签包括a action bean date debug i18n include param push set text url property4.2节 UI标签UI标签主要是指Form相关的标签,UI标签又分为两部分:form标签和构成form内部字段的其他标签。每一个UI标签都是基于模板的,即:每一个标签都有一个对应的模板用来生成UI标签的样式,详细内容参看模板节。

13、所有的UI标签都有着共通的祖先UIBean,UIBean提供了这些UI标签的一系列共通的属性,这些属性可以分为三类:模版相关的属性,JavaScript相关的属性和其他通用属性。模版相关属性:属性主题数据类型说明templateDirn/aString定义模版目录themen/aString定义主题的名字templaten/aString定义模版名字JavaScript相关属性:属性主题数据类型说明onclicksimpleStringhtml javascript onclick 属性ondbclicksimpleStringhtml javascript ondbclick属性onmous

14、edownsimpleStringhtml javascript onmousedown属性onmouseupsimpleStringhtml javascript onmouseup属性onmouseoversimpleStringhtml javascript onmouseover属性onmouseoutsimpleStringhtml javascript onmouseout属性onfocussimpleStringhtml javascript onfocus属性onblursimpleStringhtml javascript onblur属性onkeypresssimpleSt

15、ringhtml javascript onkeypress属性onkeyupsimpleStringhtml javascript onkeyup属性onkeydownsimpleStringhtml javascript onkeydown属性onselectsimpleStringhtml javascript onselect属性onchangesimpleStringhtml javascript onchange属性Tooltip相关属性:属性数据类型默认值说明tooltipStringnone为指定的组件设置TooltipjsTooltipEnabledStringfalse使用

16、js表示tooltiptooltipIconString/struts/static/tooltip/tooltip.gif指向tooltip图表的URLtooltipDelayString500多长时间后显示Tooltip keysimpleString这个输入字段对应的属性,用来自动设置name,label和value通用属性:属性主题数据类型说明cssClasssimpleString定义html class 属性cssStylesimpleString定义html style属性titlesimpleString定义html title属性disabledsimpleString定义h

17、tml disabled属性labelxhtmlString定义form字段的标签labelPositionxhtmlString定义标签在Form中的位置,从左从上计算requiredPositionxhtmlString定义必须的标签在Form中的位置,从左从上计算namesimpleString定义form字段的name映射requiredxhtmlBoolean在label上添加一个*tabIndexsimpleString定义 html tabIndex属性valuesimpleObject定义form字段的值对于name和value的说明:name用来说明Form字段的名字,和Ac

18、tion类的属性对应。value用来记录Form字段的值,和Action类中属性的值对应。所以在修改一个字段的内容的时候应该使用如下的标签: .但是,由于name和value的关系,struts2标准标签可以自动对应,所以也可以使用如下标签: .UI标签说明:Form部分autocompletercheckboxcheckboxlistcomboboxdatetimepickerdoubleselectheadfileformhiddenlabeloptiontransferselectoptgrouppasswordradioresetselectsubmittextareatextfiel

19、dtokenupdownselect非Form部分:actionerroractionmessagecomponentdivfielderrortabletabbedPaneltreetreenode4.3节 主题和模板概念说明:标签(tag):一小段代码,在JSP,Velocity或者FreeMarker中执行。程序开发的最小单位,用来生成HTML对应的元素。模板(template):一些代码,通常使用FreeMarker写成,可以被某些Tag表示出来(通常是UI Tag)。主题(theme):一组模板打包在一起,提供通用功能的模版主题和模板主要针对可视化的标签(Tag)而言,使用以下例子来

20、说明三者之间的关系。假如我们要开发如下的一个画面:我们使用如下的代码:这里,每一个都是一个标签(tag)。我们在看看这些标签在一起生成的HTML源代码:Name:Password:在由标签生成HTML代码的时候,例如:生成的代码为:Name:我们可以看到,标签提供的有效信息只有Name和name,而其余的部分,例如,等代码都根据一个固定的模板文件生成,这个模板文件为:标签使我们开发JSP画面的时候使用的最小组件单元,我们根据客户的需要组合各种Tag达到客户的需求。模板是生成这些Tag时候使用的,使用模板可以定义Tag的基本形式,在使用tag的时候,我们只需要指定该Tag的不同属性,即可根据Ta

21、g指定的特殊属性,结合模板的基本属性生成可视化的HTML元素。主题是不同tag结合在一起而形成的。input type=text name=$parameters.name?default()?html size=$parameters.get(size)?html maxlength=$parameters.maxlength?html value= disabled=disabled readonly=readonly tabindex=$parameters.tabindex?html id=$parameters.id?html class=$parameters.cssClass?h

22、tml style=$parameters.cssStyle?html title=$parameters.title?html/我们考虑标签(Tag)使用模板(Template)生成HTML的过程,根据不同的模板,坑顶可以生成不同的HTML画面,这样我们可以把不同tag的,视觉效果一致的模板放在一起:例如: TemplateForm_A, TemplateForm_B TemplateTextField_A, TemplateTextField_B TemplatePassword_A, TemplatePassword_B, TemplateSubmit_A, TemplateSubmit

23、_B TemplateReset_A, TemplateReset_B这样将_A的模板放在一起叫做A主题(Theme),将_B的模板放在一起叫B主题。这样我们在分别使用A主题,B主题的时候可以得到同一个Tag的不同的视觉效果。模版和主题的概念处在Struts Tag的核心位置。Struts2默认提供了四种主题:Simple 主题:最简单的主题XHTML 主题:默认主题,使用常用的HTML技巧CSS XHTML主题: 使用CSS实现的XHTML主题AJAX 主题:基于XHTML主题,但是同工了AJAX功能相关配置:在struts.properties文件中有如下项目:struts.ui.them

24、e=xhtmlstruts.ui.templateDir=templatestruts.ui.templateSuffix=ftlstruts.ui.theme的值表示的是使用哪个主题,可选项位:xhtml,simple,css_html,ajax其中xhtml为默认值。struts.ui.templateDir的值表示模板的存放目录。struts.ui.templateSuffix的值表示模板文件明的后缀,因为Struts2默认使用FreeMarker来编写模板,所以这里我们基本使用ftl。 另外也可以使用vm(Velocity)和jsp(Java Server Page),但是所有的Tem

25、plate和Theme要我们自己开发。关于模板文件的存放目录我们需要详细说明,如上述说明,模板文件的存放位置位template,那么系统在那里寻找template目录呢,首先,在web应用程序中查找,如果应用程序中存在一个叫做template的目录(跟WEB-INF目录平级),那么所有的文件从这个目录中取得,具体的路径还要加上主题的名字。然后,如果在web应用程序中没有找到template目录,那么struts2会在classpath中寻找,由于struts2-core-2.0.9.jar文件中存在template目录,其中内置了四种主题,所以会使用这里变的模板。例如:如果我们使用了ajax主

26、题,那么会在如下位置超找的主题应用程序/template/ajax/textfield.ftlclasspath/template/ajax/textfield.ftl修改或者扩展模板:有些时候Struts提供的模板不一定能够满足我们的需求,这时候我们需要修改或者扩展现有模板。重新做新的模板是不明智的,如果是在需要全新的模板,可以考虑基于simple扩展。修改:根据模板的装载机制,可以考虑将模板从struts2-core-2.0.9.jar文件中解压缩到web项目目录,之后修改对应的文件。包装:XHTML提供了一个很好的例子,simple主题提供了基本的功能,XHTML将它包括起来,例如:以下

27、是template/xhtml/xxx.ftl(xxx表示模板名字)文件内容:扩展(extend):使用棉线对象的特性可以扩展一个主题,扩展一个主题的时候不需要实现所有的模板,只需要实现需要变化的标签。扩展需要在目录中新建一个叫做theme.properties的文件,这个文件只有一行,表明了继承而来的主题的名字,例如:/template/ajax/theme.properties文件内容为:parent = xhtml4.4节 AJAX标签(试验阶段)Struts2内置了Dojo 0.4 来提供对Ajax的支持。想要使用AJAX标签需要做到两点:1 使用Ajax主题2 在JSP画面中使用了h

28、ead标签配置Ajax属性AJAX标签主要有: AJAX标签的一些通用属性:属性说明类型href请求使用的URLStringlistenTopic使用逗号分割的一组主题列表,这个列表中的主题会导致这个Tag自己内容(Div,Autocompleter)重新装载或者执行一个Action(Anchor,Submit)StringnotifyTopic使用逗号分割的一组主题列表,向这个列表中的主题发布一些信息,例如:data,type,request,参看每个标签的详细说明StringshowErrorTransportText设置是否显示错误消息(默认显示)Booleanindicator请求过程

29、中显示的对象,通常位ProgressBar等StringIndicatorTopic监听一个Topic:dojo.event.topic.subscribe(/refresh, function(param1, param2) /this function will be called everytime /refresh is published);向一个Topic发布内容:dojo.event.topic.publish(/refresh, foo, bar);URLHref属性对应的URL必须使用URL标签定义,例如: Initial ContentDIV标签:Div主要用来异步的显示数

30、据, PageLoad会出发Div中数据的显示,除非把AutoStart设置为False。另外,Div的数据显示可以使用Topic来触发。使用listenTopic来定义触发器。例如:每次想/refresh0,/refresh1发布内容的时候,上面代码定义的div都会刷新。使用updateFreq可以让Div周期性的触发,在autoStart设置位true的情况下,可以使用delay来延迟首次画面加载的出发时间,例如:上述代码说明,每隔2秒该div触发内容更新一次,但是首次画面加载完成之后3秒div出发内容更新。todo 其他标签4.5节 OGNLOGNL是Object Graph Navig

31、ation Language的简称,详细相关的信息可以参考:http:/www.ognl.org。这里我们只涉及Struts2框架中对OGNL的基本支持。OGNL是一个对象,属性的查询语言。在OGNL中有一个类型为Map的Context(称为上下文),在这个上下文中有一个根元素(root),对根元素的属性的访问可以直接使用属性名字,但是对于其他非根元素属性的访问必须加上特殊符号#。在Struts2中上下文为ActionContext,根元素位Value Stack(值堆栈,值堆栈代表了一族对象而不是一个对象,其中Action类的实例也属于值堆栈的一个)。ActionContext中的内容如下图

32、: | |-application | |-sessioncontext map-| |-value stack(root) | |-request | |-parameters | |-attr (searches page, request, session, then application scopes) |因为Action实例被放在Value Stack中,而Value Stack又是根元素(root)中的一个,所以对Action中的属性的访问可以不使用标记#,而对其他的访问都必须使用#标记。引用Action的属性ActionContext中的其他非根(root)元素的属性可以按照如下的方式访问:s:property value=#sessi

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!