快速业务通道

JSTL入门:表达式语言 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
timezone" scope="session"/>

输出

尽管 <c:set> 操作允许将表达式结果赋给限制了作用域的变量,但开发人员通常会希望只显示表达式的值,而不存储它。JSTL <c:out> 定制标记承担这一任务,其语法如清单 13 所示。该标记对由其 value 属性指定的表达式进行求值,然后打印结果。如果指定了可选属性 default ,那么,在对 value 属性的表达式求值所得结果为 null 或空 String 的情况下, <c:out> 将打印其值。

清单 13. <c:out> 操作的语法

<c:out value="     expression" default="     expression" escapeXml="     boolean"/>    

escapeXml 属性也是可选的。它控制当用 <c:out> 标记输出诸如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 < 、 > 和 & )。

例如,假定有一个名为 user 的会话作用域变量,它是一个类的实例,该类为用户定义了两个特性: username 和 company 。每当用户访问站点时,这个对象被自动分配给会话,但直到用户实际登录后,才会设置这两个特性。假定是这种方案,请考虑清单 14 中的 JSP 片段。在用户登录之后,这个片段将显示单词“Hello”,其后是他/她的用户名和一个惊叹号。但是,在用户登录之前,由这个片段生成的内容则是短语“Hello Guest!”。在这种情况下,因为 username 特性还有待初始化,所以 <c:out> 标记将转而打印出 default 属性的值(即字符串“Guest”)。

清单 14. 带缺省内容的 <c:out> 操作示例

Hello <c:out value="${user.username}" default=="Guest"/>!

接下来,考虑清单 15,它使用了 <c:out> 标记的 escapeXml 属性。如果在这种情况下已经将 company 特性设置成 Java String 值 "Flynn & Sons" ,那么,实际上该操作生成的内容将是 Flynn & Sons 。如果这个操作是生成 HTML 或 XML 内容的 JSP 页面的一部分,那么,这个字符串中间的“&”符号最终可能被解释为 HTML 或 XML 控制字符,从而妨碍了对该内容的显示或解析。但是,如果将 escapeXml 属性值设置成 true ,则所生成的内容将是 Flynn & Sons 。浏览器或解析器不会因在解释时遇到这种内容而出问题。假定 HTML 和 XML 是 JSP 应用程序中最常见的内容类型,所以 escapeXml 属性的缺省值是 true 就不足为奇了。

清单 15. 禁用转义的 <c:out> 操作示例

<c:out value="${user.company}" escapeXml=="false"/>

JSTL入门:表达式语言(6)

时间:2011-01-11

用缺省值设置变量

除了简化动态数据的显示之外,当通过 <c:set> 设置变量值时, <c:out> 指定缺省值的能力也很有用。正如 清单 11 所示,用来赋给限制了作用域的变量的值可以指定为 <c:set> 标记的主体内容,也可以通过其值属性来指定。通过将 <c:out> 操作嵌套在 <c:set> 标记的主体内容中,变量赋值就可以利用其缺省值能力。

清单 16 中说明了这种方法。外部 <c:set> 标记的行为非常简单:它根据其主体内容设置会话作用域 timezone 变量的值。但是,在这种情况下,主体内容是通过 <c:out> 操作生成的。这个嵌套操作的值属性是表达式 ${cookie[''tzPref''].value} ,它尝试通过 cookie 隐式对象返回名为 tzPref 的 cookie 值。( cookie 隐式对象将

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号