ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:301.75KB ,
资源ID:5350767      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5350767.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Bean标签库的StrutsEL标签.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Bean标签库的StrutsEL标签.docx

1、Bean标签库的StrutsEL标签C.3 Bean标签库的Struts-EL标签在Bean库中只有下列标签具有EL使能的版本:include、message、page、resource、size和struts。注意 EL使能的标签是指那些允许使用EL表达式的标签。具体例子参见第10章。 C.3.1 cookie/header/parameter 每一个都基于指定的cookie/header/parameter/variable的值暴露一个脚本变量。1. 使用限制 id属性和name属性是必需的。2. 属性 name:需要取得的cookie/header/parameter的名称。 id:要暴

2、露的变量的名称。scriptlet及其他定制标签将能够使用这个名称来访问cookie/header/parameter的属性。 value:万一给定名称的cookie/header/parameter不能被找到而需要返回的默认值。 multiple:指定具有相同名称的多个cookie/header/parameter如何被处理。这个属性的实际值并不重要。如果multiple属性被设置,那么通过id暴露的变量便是一个对应类型的数组(Cookie /String /String )。如果multiple属性不存在,那么第一个发生的cookie/header/parameter就会被绑定到暴露的变量

3、。3. 示例考虑下面的URL:http:/www.kenyir.org/mypage.jsp?command=test&action=save&id=12345下面就是如何在请求URL上面暴露名为command的参数:如果有不只一个名为command的参数,例如:可以这样访问它们:其他的header和cookie标签具有类似的例子。 4. 对应物 JSTL 是这个标签的替代。下面是如何在没有指定multiple属性的情况下将作为此标签的对应物。变量名为myVar *,对应的cookie/header/parameter的名称都是myAttr。如果multiple属性被指定,那么可以使用下列方式

4、之一:注意,这里还使用了一个标签来删除一个声明了的变量。C.3.2 define这个标签基于来自一个给定的字符串,或另一个JavaBean的数据暴露一个变量。scriptlet及其他标签可以像访问任何其他的变量一样访问这个暴露变量。这可能好像没有什么用处,但是它的确有用。参见具体的例子。也请参考cookie/header /parameter和page条目,其中有相关的标签。1. 使用限制id属性是必需的,并作为要暴露的变量的名称。也需要指定name/property/scope或value,或者将暴露的变量的值嵌入到标签的标签体内部。还有,只可以一次定义一个变量。试图在同一个页面中定义一个同

5、名的新变量将导致抛出异常。2. 属性 id:要暴露的变量的名称。scriptlet及其他定制标签将能够使用这个名称来访问该新变量。 name/property /scope:这些属性使用一个给定的name和可选的property和scope属性来定位一个被暴露的对象。如果没有指定scope,将在所有作用域中查找给定名称的对象。 value:要暴露的字符串值。这样将通过id属性暴露的变量绑定到value属性指定的字符串。 toScope:在其上保存新变量的作用域。可以是page、request、session或application。 type:使用id属性暴露的变量的全限定类名。如果未被指定,

6、在指定value属性的时候将同时使用java.lang.String。要使用嵌套技术也会有提示(见示例),如果使用name/property/scope的方式,隐含的类名是java.lang.Object。3. 示例下面是可以使用来暴露一个字符串或变量的例子:在最后一个例子中,如果myAttr.getMyProp()返回null,那么将抛出一个异常。否则,myVar5等于myAttr.getMyProp()在其被调用时的值。如果与Struts EL标签一起使用,可以使用来帮助本地化验证(见第12章),回想一下,在第12章的对本地化验证的处理,我们解释说可以使用嵌入本地化格式字符串到表单数据中的

7、技巧来解决(参看代码清单12-3)。Action将被用于填充隐藏字段。填充该隐藏字段的更优雅的方式是使用和,就像这样:myapp.formats.dateFormat 指向的消息是日期格式,当然,这是被Struts自动本地化的。不需要任何Action子类!4. 对应物 JSTL 可用于替换。前面的例子移植到可能是:最后一个例子是相似的:C.3.3 include这个有趣的标签允许调用一个外部的JSP或全局转发或URL,并且将结果响应数据作为一个变量访问。被调用页面的响应不会写出到响应流。如果该暴露的变量是用显示的,接收到的输出是经过HTML编码的(“”被替换为“& It;”,等等)。1. 使用

8、限制 必须指定id属性和forward、page或者href属性之一。2. 属性 id:要暴露的变量的名称。scriptlet及其他定制标签将能够使用这个名称来访问该新变量。结果变量是页面作用域的。 forward:要调用的全局转发的名称。 page:要调用的当前Web应用中的JSP页面的名称。这个名称是相对于模块的,并且需要一个“/”前缀。 href:外部页面的的绝对URL,例如http:/www.kenyir.org/code/index.html。 anchor:被调用页面的HTML锚的名称。 transaction:如果被设置为true,则会在响应中包含事务令牌。参见条目中的说明。3.

9、 示例这个例子读取给定的外部页面,然后显示实际的内容。接收到的HTML都是经过编码的:4. 对应物 最接近的对应物是JSTL的,它调用一个URL并且暴露接收的数据为一个String或者一个Reader。前面的例子可以轻易地转变为使用JSTL:注意,还可以使用嵌套标签在接收数据上执行参数替代。C.3.4 message这个标签显示一个国际化了的消息。最多可以指定5个替代参数。1. 使用限制 必须指定key属性或者name/property/scope组合。2. 属性 key:要显示的消息资源的关键字。如果locale/bundle组合没有被指定,那么默认消息资源文件和用户的当前场所将被用来决定显

10、示哪个消息资源。 name/property/scope:这些属性被用来基于一个具有给定的name和可选的property和scope属性的对象来导出一个关键字。如果没有指定scope,将在所有作用域中查找给定名称的对象。 locale/bundle:这些属性用于指定一个不同的场所对象或消息资源文件。locale指定一个可用于查找存储于当前会话中的Locale对象的关键字。bundle属性将在下面的小节中详细解释。 arg0/arg1/arg2/arg3/arg4:这些分别是第一个、第二个、第三个、第四个以及第五个替代参数的值。3. 使用多重消息资源文件 Struts允许声明多个消息资源文件(

11、也就是说,对同一个场所有多个Application.properties文件。每一个这样的消息资源文件被命名为一个唯一的名称,并在Struts标签中使用bundle属性来引用)。默认消息资源文件没有名称,并且它是唯一的,也就是说如果bundle属性没有被指定,就将使用它。你应该知道使用多重的消息资源文件有一些问题: 有报告说与Validator框架一起使用会有问题。 它让维护更加困难。这是因为除指定关键字之外,必须指示bundle名称(如果它不是默认的那个的话)。如果后来决定将一个消息从一个文件移动到另一个文件中(如果想要调整一个应用程序以确保显示的消息或提示的一致性,这就会很常见),那么必须

12、修改每个使用那些特殊消息的标签的bundle属性值。所以应该尽可能地避免使用这个特征。一种可选的方法是对关键字使用一种命名约定,比如点号命名约定(例如,app.error. prompt.login)。笔者在本书中就对消息关键字使用了这种约定。这能够创建分离的名字空间,因此排除了使用多个消息资源文件的必要。现在应该知道使用多个消息资源文件的危险了。下面是可以如何在struts-config.xml文件中声明多个消息资源文件:在这个例子中,第二个消息资源文件是Application2.properties,并且被保存在与默认的Application.properties文件的同一地点(也就是说,

13、在/WEB-INF/classes/中)。为了从该默认文件中显示一个提示,可使用为了从第二文件中显示一个提示,可使用额外的bundle属性告诉Struts使用哪个消息资源文件。4. 示例下面是如何显示一个消息的例子:这里是如何使用其toString()方法返回关键字的JavaBean的例子:这里是如何使用其属性给出关键字的JavaBean的例子:这个例子调用MyBean.getFormatKey()并且将其用做消息关键字。如果必要将在返回值上调用toString()方法。如果该消息具有替代参数,例如:可以使用下面的代码来执行替代(使用EL):5. 对应物 在JSTL和JSF中都有对应物。对于J

14、STL,可以使用格式化库:这段代码片段是最后一个例子使用对应物的情况,使用了一个替代参数。如果使用JSF,可以很方便地使用Struts-Faces库(参见第20章)来暴露默认消息资源文件:这和前面的JSTL例子是等价的。最后,还有一个来自Struts-Faces集成库的标签。C.3.5 page这个方便的标签将来自于页面上下文中的对象暴露为可以通过scriptlet或定制标签访问的变量。PageContext对象是当前页面的所有状态的储存库。这包含在第2章描述过的会话(HttpSession)和请求(HttpServletRequest)中。还有一些: application:javax.se

15、rvlet.ServletContext对象,通过调用pageContext.getServlet- Context()来获得。 config:javax.servlet.ServletConfig对象,通过调用pageContext.getServletConfig()来获得。不要将其与Struts的内部配置对象搞混淆。 response:与此页面关联的HttpServletResponse对象。应该参考最新的servlet参考文档(或者在Google上搜索类名来找到相关JavaDoc),以获得有关它们的更多详细信息。1. 使用限制id属性和property属性都是必需的。2. 属性 id:

16、要暴露的变量的名称。scriptlet及其他定制标签将能够使用这个名称来访问该新变量。这个属性是必需的。 property:该属性的值是application、session、request、config或response,用于从页面上下文获得关联的对象。这个属性是必需的。3. 示例代码片断将与外围的页面相关联的会话对象(HttpSession)暴露为一个名为myVar的bean。另一个页面上下文对象是以同样的方式被暴露的。4. 对应物 JSTL的可用于替换。我们来看一些例子。为暴露应用程序,使用这个代码:为了暴露会话,使用这个:为了暴露请求,使用这个:为了暴露配置对象,使用这个:为了暴露响应

17、,使用这个:应该注意到JSTL隐含的对象sessionScope和pageContext.session是不相同的。前者是一个包含关键字/值对的Map,后者是实际的HttpSession对象,可以读取它的属性。C.3.6 resourceresource允许从当前Web应用程序读取任何文件并且将其暴露为一个字符串变量或者一个InputStream。参见。1. 使用限制id属性和name属性是必需的。2. 属性 id:要暴露的变量的名称。scriptlet及其他定制标签将能够使用这个名称来访问该新变量。这个属性是必需的。 name:要加载资源的模块相对的名称。 input:如果这个属性被指定(实

18、际的值并不重要),那么该暴露的变量具有InputStream类型,否则它是String类型。3. 示例 说实在的,很难看到这个标签如何有用,除非使用其他可以读取和解析InputStream的定制标签。下面是使用一假定的RSS源(/myRss.xml,其中包含RSS标记)的一个例子,以及一个假定的用来显示RSS输出的定制标签例子:4. 对应物 最接近的对应物是JSTL的,它调用一个URL并且暴露接收到的数据为一个String或者一个Reader。前面的例子可以轻易地转变为使用JSTL:C.3.7 size这个标签将一个给定的Collection或者Map或者数组的大小暴露为一个变量(整数类型),

19、可以从scriptlet或定制标签访问到。1. 使用限制 id属性是必需的,并且必须指定想要测量大小的数组/ Collection/Map,使用collection属性或者一个name/property/scope组合。2. 属性 id:要暴露的变量的名称。scriptlet及其他定制标签将能够使用这个名称来访问该新变量。这个属性是必需的。 name/property/scope:这些属性被用来定位Collection/Map/数组,基于可选的属性和作用域。如果没有指定scope,将在所有作用域中查找给定名称的对象。 collection:这个是name/property/scope组合的一个

20、非常方便的替换物。使用scriptlet来计算这个属性的值,例如:这个属性后面的基本原理将在条目中解释。3. 示例下面是暴露一个给定集合的大小的简单例子:4. 对应物 可以连同JSTL length函数使用JSTL的:记住声明JSTL函数标签库。C.3.8 struts这个标签暴露一个Struts全局转发,或表单bean或表单处理器(该表单处理器的ActionMapping)为一个变量,可以通过scriptlet及其他标签进行访问。如果想要JSTL能够访问Struts的内部变量,这是很有帮助的。1. 使用限制id属性是必需的。还必须指定forward、formBean或mapping属性。2.

21、 属性 id:要暴露的变量的名称。scriptlet及其他定制标签将能够使用这个名称来访问该新变量。这个属性是必需的。 forward:要暴露的全局转发的名称。 formBean:要暴露的已经声明的表单bean的名称。 mapping:要暴露的表单处理器的名称。 3. 示例考虑这段struts-config.xml代码:下面是暴露全局转发的方式:以及表单bean:以及表单处理器:4. 对应物 无。C.3.9 write这个标签将指定的bean属性输出为响应流。它允许对给定的bean属性进行一些格式化。1. 使用限制name属性是必需的。2. 属性 name/property/scope:这些属

22、性被用来基于给定的name 和可选的property 和scope 来定位JavaBean。如果没有指定scope,将在所有作用域中查找给定名称的对象。 ignore:如果被设置为true,则一旦命名的JavaBean没有找到,则失败,什么也不会发生。默认值(false)导致一个异常被抛出。剩下的属性用来格式化bean的属性: filter:如果设置为true,将导致属性的字符串值是HTML编码的。例如,符号(&)将被编码成& amp;而将被编码成& gt;默认是true。 format/formatKey:这两者都指定一个用于格式化bean的属性的格式化字符串。format将按照字面使用其值

23、来作为格式化字符串。而formatKey则将它的值作为一个关键字从消息资源文件中查找实际的格式化字符串。除非locale/bundle组合被指定,当前用户的场所以及默认消息资源束将被使用。 locale/bundle:这些属性用于指定一个不同的场所对象或消息资源文件。Locale属性指定一个可以用来在当前会话中查找Locale对象的关键字。bundle属性将会在条目中详细解释。可以和formatKey一起使用这些属性来指定一个不同于当前用户场所的场所,或者一个不同于默认资源文件的消息资源文件。3. 示例代码将显示由myString引用的字符串。将显示MyBean.getMessage()的值。

24、将显示等于3.1416的myFloat为3.14。将格式化由myCalendar表达的日期为dd/mm yyyy。例如20 Feb 2006将被显示为20/02/2006。将使用消息关键字app.format.dateFormat的值作为格式化字符串。4. 对应物 可以使用JSTL的来显示一个bean的属性:将显示MyBean.getMessage()的值。为了格式化该输出,可以使用JSTL的格式化标签库:相当于前面给出的数值格式化的例子,或者:JSTL的格式化标签库具有许多格式化字符串、日期、货币以及数值的变化。如果你还感兴趣想深入了解,应该参考最新的JSTL规范。 最后,Struts-Faces集成库中的标签是另一个对应物。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1