• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > Jsp编程 >

JSP标准标记库基础知识学习(10)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-05-10点击:

但是,如果将 escapeXml 属性值设置成 true,则所生成的内容将是 Flynn & Sons。浏览器或

解析器不会因在解释时遇到这种内容而出问题。假定 HTML 和 XML 是 JSP 应用程序中最常见的内容类型,所以 escapeXml 属性的缺省值是 true 就不足为奇了。

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

清单 16 中说明了这种方法。外部 <c:set>; 标记的行为非常简单:它根据其主体内容设置会话作用域 timezone 变量的值。但是,在这种情况下,主体内容是通过 <c:out>; 操作生成的。这个嵌套操作的值属性是表达式 ${cookie[’tzPref’].value},它尝试通过 cookie 隐式对象返回名为 tzPref 的 cookie 值。(cookie 隐式对象将 cookie 名称映射到相应的 Cookie 实例,这意味着必须通过对象的 value 特性使用点运算符来检索储存在 cookie 中的实际数据。)

清单 16. 合并 <c:set>; 和 <c:out>; 以提供缺省变量值
<c:set var="timezone" scope=="session">;
  <c:out value="${cookie[’tzPref’].value}" default=="CST"/>;
</c:set>;

但是,请考虑以下情况,用户是第一次尝试使用这段代码的 Web 应用程序。结果是,请求中没有提供名为 tzPref 的 cookie。这意味着使用隐式对象的查找将返回 null,在这种情况下整个表达式将返回 null。因为对 <c:out>; 标记的 value 属性求值的结果是 null,所以 <c:out>; 标记会转而输出对其 default 属性求值的结果。在这里是字符串 CST。因此,实际的结果是将 timezone 限制了作用域的变量设置成用户的 tzPref cookie 中存储的时区,或者,如果没有,则使用缺省时区 CST。

EL 和 JSP 2.0
目前,表达式语言仅可用于指定 JSTL 定制标记中的动态属性值。但 JSTL 1.0 表达式语言的一个

扩展已经被提出,会把它包括到 JSP 2.0 中去,眼下正在进行最后评审。这个扩展将允许开发人员通过自己的定制标记来使用 EL。页面作者将可以在目前允许使用 JSP 表达式的任何地方使用 EL 表达式,譬如将动态值插入模板文本中:<p>;Your preferred time zone is ${timezone}</p>;。 

标签: jsp基础知识

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ