Struts秘籍之第2段:第3.2式:使用Struts-EL 標簽
第3.2式. 使用Struts-EL 標簽
問題
你希望在將JSTL 表達式用作Struts標簽的屬性值。
動作要領(lǐng)
使用Struts 分發(fā)保提供的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 |
||
bean-el |
||
logic-el |
動作變化
JSTL風格的表達式,比如${foo.bar[4].baz},并不能夠被基本的 Apache Struts Web Framework 標簽支持。例如,如果你能夠使用下面的方式來格式化一個標簽就好了:

相反,這些標簽需要運行時表達式,它們只是Java 代碼(JS表達式):

將Java 代碼從 JSP 頁面中剔除會使得你的頁面更少脆弱性和更容易維護。認識到了這種對EL 支持的缺乏后,因而創(chuàng)建了Apache Struts Web Framework-EL 標簽庫。這些庫擴展了html, bean, and logic Apache Struts Web Framework 標簽庫,以添加對EL 表達式的支持。如果一個Struts 標簽的屬性支持一個運行時表達式,對應的Struts-EL 標簽便會支持JSTL 表達式。可以在應用中混合使用常規(guī)的Struts 標簽和Struts-EL 標簽,即使在同一個頁面中也可以。僅僅是需要保證在頁面的taglib指令中為每一個標簽庫定義一個不同的前綴。
然而,Struts-EL 標簽不是JSTL的替代。Struts-EL 標簽僅提供僅僅針對Struts的標簽。如果Struts 標簽可以被一個JSTL 標簽所替代,該標簽就不會在Struts-EL 標簽庫中實現(xiàn)。
關(guān)于JSP 2.0如果你使用支持JSP 2.0的容器,比如Tomcat 5,那么你便可以直接在基本Struts 標簽中使用JSTL表達式。這就是說,不再需要使用Struts-EL 標簽了。JSP 2.0 支持EL 表達式在頁面中的直接使用。這些表達式可以用來渲染動態(tài)文本,就像原來常規(guī)HTML 標記和定制JSP標簽中的動態(tài)屬性值中的文本一樣。表達式的值就像是你使用JSTL c:out標簽輸出的一樣:
![]()
為了使用這個強大的特征,你必須是用兩種方式之一來激活EL 。如果你使用Servlet 2.4 規(guī)范, EL 則默認是支持的。你可以通過你的應用的web.xml文件來區(qū)別是不是2.4版本的servlet規(guī)范。該文件的開頭應該是這樣:
![]()
如果你使用Version 2.3 或者更早的規(guī)范,你將需要在JSP頁面的開頭使用下面的JSP 指令進行設(shè)置:
![]()
如果你使用2.4 DTD,那么你不需要設(shè)置這個指令;EL 語法將不會被忽略。如果你不確定,盡管可以設(shè)置它,這不會發(fā)生什么錯誤問題。 |
相關(guān)招式
第3.1式詳細描述了如何配置JSTL的使用。
posted on 2005-05-27 14:29 鐵手 閱讀(4883) 評論(3) 編輯 收藏 所屬分類: Java 、Struts系列