鐵手劍譜

          上善若水
          數(shù)據(jù)加載中……
          Struts秘籍之第2段:第3.2式:使用Struts-EL 標(biāo)簽

          第3.2式. 使用Struts-EL 標(biāo)簽

          問題

          你希望在將JSTL 表達(dá)式用作Struts標(biāo)簽的屬性值。

          動作要領(lǐng)

          使用Struts 分發(fā)保提供的EL標(biāo)簽庫,位于contrib/struts-el/lib目錄。你需要將所有JAR 和 TLD 文件拷貝到應(yīng)用的WEB-INF/lib目錄。在需要時用該標(biāo)簽的地方使用下面的taglib指令:

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

           

          表列出了Struts-EL 標(biāo)簽庫和對應(yīng)的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風(fēng)格的表達(dá)式,比如${foo.bar[4].baz},并不能夠被基本的 Apache Struts Web Framework 標(biāo)簽支持。例如,如果你能夠使用下面的方式來格式化一個標(biāo)簽就好了:

           

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

           

          相反,這些標(biāo)簽需要運(yùn)行時表達(dá)式,它們只是Java 代碼(JS表達(dá)式):

           

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

           

          將Java 代碼從 JSP 頁面中剔除會使得你的頁面更少脆弱性和更容易維護(hù)。認(rèn)識到了這種對EL 支持的缺乏后,因而創(chuàng)建了Apache Struts Web Framework-EL 標(biāo)簽庫。這些庫擴(kuò)展了html, bean, and logic Apache Struts Web Framework 標(biāo)簽庫,以添加對EL 表達(dá)式的支持。如果一個Struts 標(biāo)簽的屬性支持一個運(yùn)行時表達(dá)式,對應(yīng)的Struts-EL 標(biāo)簽便會支持JSTL 表達(dá)式。可以在應(yīng)用中混合使用常規(guī)的Struts 標(biāo)簽和Struts-EL 標(biāo)簽,即使在同一個頁面中也可以。僅僅是需要保證在頁面的taglib指令中為每一個標(biāo)簽庫定義一個不同的前綴。

          然而,Struts-EL 標(biāo)簽不是JSTL的替代。Struts-EL 標(biāo)簽僅提供僅僅針對Struts的標(biāo)簽。如果Struts 標(biāo)簽可以被一個JSTL 標(biāo)簽所替代,該標(biāo)簽就不會在Struts-EL 標(biāo)簽庫中實(shí)現(xiàn)。

          關(guān)于JSP 2.0

          如果你使用支持JSP 2.0的容器,比如Tomcat 5,那么你便可以直接在基本Struts 標(biāo)簽中使用JSTL表達(dá)式。這就是說,不再需要使用Struts-EL 標(biāo)簽了。JSP 2.0 支持EL 表達(dá)式在頁面中的直接使用。這些表達(dá)式可以用來渲染動態(tài)文本,就像原來常規(guī)HTML 標(biāo)記和定制JSP標(biāo)簽中的動態(tài)屬性值中的文本一樣。表達(dá)式的值就像是你使用JSTL c:out標(biāo)簽輸出的一樣:

           

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

           

          為了使用這個強(qiáng)大的特征,你必須是用兩種方式之一來激活EL 。如果你使用Servlet 2.4 規(guī)范, EL 則默認(rèn)是支持的。你可以通過你的應(yīng)用的web.xml文件來區(qū)別是不是2.4版本的servlet規(guī)范。該文件的開頭應(yīng)該是這樣:

           

          <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 或者更早的規(guī)范,你將需要在JSP頁面的開頭使用下面的JSP 指令進(jìn)行設(shè)置:

           

          <%@page isELIgnored="false"%> 

           

          如果你使用2.4 DTD,那么你不需要設(shè)置這個指令;EL 語法將不會被忽略。如果你不確定,盡管可以設(shè)置它,這不會發(fā)生什么錯誤問題。

           

          相關(guān)招式

          第3.1式詳細(xì)描述了如何配置JSTL的使用。

          posted on 2005-05-27 14:29 鐵手 閱讀(4885) 評論(3)  編輯  收藏 所屬分類: JavaStruts系列

          評論

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

          本系列源改編自O(shè)'Reily的Strus Cookbook
          [引用提示]阿泠引用了該文章, 地址: http://blog.donews.com/inclear/archive/2005/11/12/624363.aspx
            回復(fù)  更多評論    

          # re: Struts秘籍之第2段:第3.2式:使用Struts-EL 標(biāo)簽 2006-12-01 11:17 笨笨猴

          鐵手兄,非常感謝。。。。

          好久沒有來你這里看了,但每次一來,總是會有所收獲。。。
            回復(fù)  更多評論    

          # re: Struts秘籍之第2段:第3.2式:使用Struts-EL 標(biāo)簽 2009-05-20 16:04 學(xué)習(xí)

          學(xué)習(xí) http://www.dwww.cn
            回復(fù)  更多評論    
          主站蜘蛛池模板: 福清市| 醴陵市| 阿克陶县| 瑞丽市| 舒兰市| 廉江市| 云南省| 台湾省| 塔河县| 东山县| 阳谷县| 廉江市| 汉川市| 民县| 兴山县| 齐河县| 临安市| 乌审旗| 黄平县| 中方县| 繁峙县| 凤山市| 郧西县| 玛沁县| 林州市| 同德县| 上饶市| 红原县| 休宁县| 康定县| 化德县| 龙海市| 临澧县| 神木县| 高雄县| 探索| 乾安县| 信阳市| 洛阳市| 抚州市| 平阳县|