分享
 
 
 

在Struts中使用Tiles框架

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

这是Jakarta Struts编程一书中使用 Tiles框架系列的第三部分,主要阐述了如何使用标记库(包括:insert, definition, put, putList, add, get, getAsString, useAttribute, importAttribute, and initComponentDefinitions).

Tiles标记库(The Tiles Tag Library)

这一部分介绍Tiles 框架使用的JSP自定义标记。表14-1列出了框架可用的标记 。这些标记与其他一些基于模板的框架所提供的标记是非常相似的,但是Tiles框架中蕴含着更丰富的功能。

表 14-1: Tiles框架标记库中的标记

标记名(Tag name)

描述(Description)

Add

增加一个元素到环境列表中。

definition

创建一个Tiles组件定义。

Get

从请求作用域中得到内容(content),这个内容是put 标

记所置入的。

GetAsString

传递tile/component/template属性指定的值到当前的

JspWriter中。

importAttribute

引入一个Tiles属性到指定的上下文(context)中;

initComponentDefinitions

初始化一个Tiles定义工厂。

Insert

插入一个Tiles组件。

Put

设置一个属性到一个Tiles上下文中。

PutList

声明一个列表,这个列表作为一个属性被传递。

useAttribute

在页面中使用一个属性值。

insert 标记

insert 标记是负责页面中插入内容。在一个Tiles布局中, insert标记使用属性值指定的内容。在非Tile布局中,insert标记是用来获得一个框架(layout)并且使用put 标记把内容传递给布局中。

表14-2列出insert 标记的属性:

表 14-2:insert 标记的属性

属性名(Attribute name)

描述(Description)

attribute

当前Tiles /组件上下文的属性名称,这个属性值是由name 属性来传递的。

beanName

Bean 的名称作为值来使用.Bean是从指定的内容中获得。

如果有的话,Bean可以从指定的上下文中获得。否则就得使用pageContext.findAttribute( ) 方法获得。 如果beanProperty 属性已经指定,也可以从相应Bean属性中获得这个值 。

如果,这个Bean(或Bean的属性值)是某个属性类(Direct, Instance,等等)的实例, 那么插入过程要依照类的类型而定。另外,调用Bean 的toString( ) 方法,并返回值为String,并传给name属性。

beanProperty

Bean 属性(property)的名字,如果指定,那么这个值从

Bean的属性(property)中获得.

beanScope

Bean的作用范围,如果没有指定, pageContext.findAttribute( ) 方法可以使用。Bean的范围可以是任何的JSP, 组件(component),或者模板(template)。在后两者情况(组件,模板),bean 可以在 Tiles (tile)/组件(component)/模板(template)内容中

component

一个描述tile 或者 模板(template)URI的字符串. 模板(template),页(page)和 组件(component)属性必须有严格相同的行为

controllerUrl

在页被插入前,控制器(controller)的直接URI 。 这个URI通常用来指示一个struct action. 这个控制器(action) 是用来为inserted tile 准备数据的。只能有 一个controllerUrl 或 controllerClass

controllerClass 页面(page)被插入前,直接调用的一种控制(control)类的类型。这个类是用来为inserted tile 准备数据的。只能有 一个controllerUrl 或 controllerClass 。这个类实现或扩展下列类之一:org.apache.struts.tiles.Controller, org.apache.struts.tiles.ControllerSupport,或org.apache.struts.action.Action.

definition

Insert定义的名称。定义在一个集中的文件中被定义。现在,仅仅一个工厂(factory)的定义可以用这个属性插入。插入一个用definition定义的定义,用beanName="".

flush

true 或者 false. 如果true, 当前页会在tile insertion.前输出流

ignore

如果这个属性设置为 true 并且name所指定的属性不存在的话,仅仅会返回一个什么都没有写得结果。初始值设置为false,可以抛出一个 runtime exception

name

一个要被插入得实体(entity)的名字。查找按照下面的顺序 definition, attribute, 然后 page.

page

一个表示tile 或者 template 的URI字符串。template,page, 和 component 属性要严格的有同样的行为

role

如果用户是指定的角色,那么这个标记才会起作用,否则,这个标记会被忽略掉,并且不会写出任何内容。

template

一个表示tile 或者 template 的URI字符串。template,page, 和 component 属性要严格的有同样的行为

definition 标签

definition 标签用bean的定义方法创建一个tile (template),这个新创建的bean在requested scope用一个id来标识。definition 标签的有些语法和insert 一样。新的定义可以扩展在definition factory (XML file)中已经描述过的定义,并且可以重载以前定义的参数。

Table 14-3 列出了definition 标签支持的属性

属性名

描述

extends 可以用来扩展的父定义,这个父定义在definitions factory被定义了。

id 定义bean的名称,这个属性是必需的

page 要插入template/component 的URL 。和template.一样。

role 在插入一个定义前,进行检查role.如果当前用户并没有定义这个role,那么这个定义将不会被插入。再插入的时候进行检查,而不是在定义的时候。

scope 在新定义bean 的时候被创建。如果没有指定,默认值是page scope.

template tile/component/template (a JSP page)的URL

.

下面的片断展示了如何在JSP中使用definition标签。

<tiles:definition

id="storefront.default"

page="/layouts/storefrontDefaultLayout.jsp"

scope="request"

<tiles:put name="header" value="/common/header.jsp" /

<tiles:put name="menubar" value="/common/menubar.jsp" /

<tiles:put name="copyright" value="/common/copyright.jsp" /

</tiles:definition

一个完整的例子将在这章后面的"Declaring Definitions in a JSP Page" 中展示

put 标签

put 标签用来传递属性到一个tile 组件。 这个标签只能在insert 或 definition 标签内部使用。 put标签的值被value 属性或者标签体指定。也经常被指定值得类型。

string: 文如其名

page 或template: 内容包含指定的URL. 名字通常以URL用.

definition: 内容从指定(from factory)的定义获得. 名字以已定义的名字使用。如果type 已经使用, 他就会被get 或 insert 标签插入到tile. 如果type 属性没有被指定,则内容是不确定的untyped,除非它来自一个typed bean.

提示: Setting direct="true" 与setting type="string" 是相同的.

Table 14-4 列出了put 标签的属性。

属性名

描述

beanName

Bean 的名称,和值(value)的使用方法一样.Bean是从特殊的内容中获得。如果有的话,还可以用pageContext.findAttribute( ) 方法获得。 如果beanProperty 属性已经指定,可以从相应Bean属性中获得这个值 。

beanProperty

Bean 属性(property)的名字,如果指定,那么这个值从Bean的属性(property)中获得.

beanScope

Bean的作用范围,如果没有指定,pageContext.findAttribute( ) 方法可以使用。Bean的范围可以是任何的JSP, 组件(component),或者模板(template)。在后两者情况(组件,模板),bean 可以在 Tiles (tile)/组件(component)/模板(template) 内容中

content

Content 在tile 范围内。 属性相当于value 属性,增加是为了于JSP template tags 兼容。.

Direct

Content的控制方法: true意味着Content直接显示; false意味着content 被包含。 false 是默认值。也是指定content 类型的一种方法。如果 direct="true", content是 "string"; 如果 direct="false", content 是 "page".增加这个属性是为了于JSP template tags 兼容。.

Name

属性的名称(name).

Role

如果用户是指定的角色,那么这个标记才会起作用,否则,这个标记会被忽略掉,并且不会写出任何内容。

Type

content 的类型(type)。有效值是"string", "page", "template", 或 "definition".

value

属性的值,可以是String 或者 Object. 值是直接被分配的。 (value="avalue") 或者从一个bean 获得。一个value, content, 或 beanName 一定存在。

putList 标签

putList 标签建立一个list,在 tile 中以值传递。 list 元素用add 标签增加。这个标签只能在insert 或definition 标签中使用。

Table 14-5 列出putList 标签的属性。

属性名 描述

Name List 的名称。这个属性是被要求的。

add 标签

add 标签是增加一个element 到周围的list 中。这个标签只能在putList 标签中使用。这个值可以直接被分配。 (value="avalue") 或者从一个bean中获得。 一个value 或beanName 必须被指定。

Table 14-6 列出 add 标签的属性。

属性名

描述

beanName

Bean 的名称,和值(value)的使用方法一样.Bean是从特殊的内容中获得。如果有的话,还可以用pageContext.find

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有