铁手剑谱

上善若水
数据加载中……
Struts秘籍之第2段:第3.2式:使用Struts-EL 标签

第3.2式. 使用Struts-EL 标签

问题

你希望在将JSTL 表达式用作Struts标签的属性值。

动作要领

使用Struts 分发保提供的EL标签库,位于contrib/struts-el/lib目录。你需要将所有JAR 和 TLD 文件拷贝到应用的WEB-INF/lib目录。在需要时用该标签的地方使用下面的taglib指令:

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html-el" prefix="html-el" %>

 

表列出了Struts-EL 标签库和对应的taglib URI。

Table 3-2. Apache Struts Web Framework-EL Taglib URIs

Tag library

Apache Struts Web Framework-EL Taglib URI (1.1)

Apache Struts Web Framework-EL Taglib URI (1.2)

html-el

http://jakarta.apache.org/struts/tags-html-el

http://struts.apache.org/tags-html-el

bean-el

http://jakarta.apache.org/struts/tags-bean-el

http://struts.apache.org/tags-bean-el

logic-el

http://jakarta.apache.org/struts/tags-logic-el

http://struts.apache.org/tags-logic-el

 

动作变化

JSTL风格的表达式,比如${foo.bar[4].baz},并不能够被基本的 Apache Struts Web Framework 标签支持。例如,如果你能够使用下面的方式来格式化一个标签就好了:

 

<html:text value="${sessionScope.foo.bar[3]}"/> 

 

相反,这些标签需要运行时表达式,它们只是Java 代码(JS表达式):

 

<html:text value="<%=session.((Foo)getAttribute("foo")).getBar(3)%>"/> 

 

将Java 代码从 JSP 页面中剔除会使得你的页面更少脆弱性和更容易维护。认识到了这种对EL 支持的缺乏后,因而创建了Apache Struts Web Framework-EL 标签库。这些库扩展了html, bean, and logic Apache Struts Web Framework 标签库,以添加对EL 表达式的支持。如果一个Struts 标签的属性支持一个运行时表达式,对应的Struts-EL 标签便会支持JSTL 表达式。可以在应用中混合使用常规的Struts 标签和Struts-EL 标签,即使在同一个页面中也可以。仅仅是需要保证在页面的taglib指令中为每一个标签库定义一个不同的前缀。

然而,Struts-EL 标签不是JSTL的替代。Struts-EL 标签仅提供仅仅针对Struts的标签。如果Struts 标签可以被一个JSTL 标签所替代,该标签就不会在Struts-EL 标签库中实现。

关于JSP 2.0

如果你使用支持JSP 2.0的容器,比如Tomcat 5,那么你便可以直接在基本Struts 标签中使用JSTL表达式。这就是说,不再需要使用Struts-EL 标签了。JSP 2.0 支持EL 表达式在页面中的直接使用。这些表达式可以用来渲染动态文本,就像原来常规HTML 标记和定制JSP标签中的动态属性值中的文本一样。表达式的值就像是你使用JSTL c:out标签输出的一样:

 

<p>Hello, ${user.firstName}<br /><html:text value="${sessionScope.foo.bar[3]}"/> 

 

为了使用这个强大的特征,你必须是用两种方式之一来激活EL 。如果你使用Servlet 2.4 规范, EL 则默认是支持的。你可以通过你的应用的web.xml文件来区别是不是2.4版本的servlet规范。该文件的开头应该是这样:

 

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"> 

 

如果你使用Version 2.3 或者更早的规范,你将需要在JSP页面的开头使用下面的JSP 指令进行设置:

 

<%@page isELIgnored="false"%> 

 

如果你使用2.4 DTD,那么你不需要设置这个指令;EL 语法将不会被忽略。如果你不确定,尽管可以设置它,这不会发生什么错误问题。

 

相关招式

第3.1式详细描述了如何配置JSTL的使用。

posted on 2005-05-27 14:29 铁手 阅读(4864) 评论(3)  编辑  收藏 所属分类: JavaStruts系列

评论

# Struts 秘籍(CookBook)[TrackBack] 2005-11-12 18:29 阿泠

本系列源改编自O'Reily的Strus Cookbook
[引用提示]阿泠引用了该文章, 地址: http://blog.donews.com/inclear/archive/2005/11/12/624363.aspx
  回复  更多评论    

# re: Struts秘籍之第2段:第3.2式:使用Struts-EL 标签 2006-12-01 11:17 笨笨猴

铁手兄,非常感谢。。。。

好久没有来你这里看了,但每次一来,总是会有所收获。。。
  回复  更多评论    

# re: Struts秘籍之第2段:第3.2式:使用Struts-EL 标签 2009-05-20 16:04 学习

  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: