<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鐵手劍譜

    上善若水
    數據加載中……

    Struts秘籍之第2段:第3.3式:顯示索引屬性

    第3.3式. 顯示索引屬性

    問題

    在一個JSP 頁面中,你需要訪問一個對象中的索引的屬性。

    動作要領

    使用bean.property[index]來訪問索引的值,如Example 3-1所示。

    Example 3-1. 訪問索引屬性

     

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

    <ul>
      
    <li><bean:write name="foo" property="bar.baz[0]"/></li>
      
    <li><bean:write name="foo" property="bar.baz[1]"/></li>
      
    <li><bean:write name="foo" property="bar.baz[2]"/></li>
    </ul>

     

    JSTL 也支持對索引屬性的訪問,如Example 3-2 所示。

    Example 3-2. 訪問索引屬性(JSTL)
    <@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

    <ul>
      
    <li><c:out value="${foo.bar.baz[0]}"/></li>
      
    <li><c:out value="${foo.bar.baz[1]}"/></li>
      
    <li><c:out value="${foo.bar.baz[1]}"/></li>
    </ul>

    動作變化

    索引的屬性是Struts標簽中最容易誤解的一個部分。一個索引屬性是表達一組值的JavaBean 屬性,而不是一個單獨的標量值。索引屬性通過下面格式的getter 方法進行訪問:

     

    public Foo getSomeProperty (int index)  } 

     

    同時,索引屬性則通過下面格式的setter 方法進行設置:

     

    public void setFoo(int index, Foo someProperty)  } 

     

    我們來考慮一個表示日歷的JavaBean。CalendarHolder類的代碼如Example 3-3 所示,它有一個名為monthSet的嵌套屬性,表達日歷中的月份。

    Example 3-3. Calendar JavaBean

     

    package com.oreilly.strutsckbk;

    public class CalendarHolder {
        
        
    private MonthSet monthSet;

        
    public CalendarHolder( ) {
            monthSet 
    = new MonthSet( );
        }

        
        
    public MonthSet getMonthSet( ) {
            
    return monthSet;
        }

    }

     

    MonthSet類的代碼則如Example 3-4 所示,它是一個具有索引屬性的類,該屬性表達月份的名稱("January," "February," 等等)。

    Example 3-4. 具有索引屬性的類

     

    package com.oreilly.strutsckbk;

    public class MonthSet {
        
        
    static String[] months = new String[] {
                
    "January""February""March""April",
                  
    "May""June""July""August",
                  
    "September""October""November""December"
        }
    ;
        
        
    public String[] getMonths( ) {
            
    return months;
        }


        
    public String getMonth(int index) {
            
    return months[index];
        }

        
        
    public void setMonth(int index, String value) {
            months[index] 
    = value;
        }

    }

     

    我們的目標是訪問在JSP頁面中訪問CalendarHolder實例的monthSet屬性的索引屬性month,代碼片斷如下所示:

     

    <jsp:useBean id="calendar" class="com.oreilly.strutsckbk.CalendarHolder"/>

    <ul>
        
    <li><bean:write name="calendar" property="monthSet.months[0]"/></li>
        
    <li><bean:write name="calendar" property="monthSet.months[1]"/></li>
        
    <li><bean:write name="calendar" property="monthSet.months[2]"/></li>    
    </ul>

     

    如果顯示的索引屬性要動態才能決定它是什么,那么使用的索引要使用JSP 腳本變量來進行設置。你可以使用scriptlet 來產生屬性值,如下所示:

     

    You have selected month number <bean:write name="monthIndex"/>
    <bean:write name="calendar" 
            property
    ='<%= "monthSet.month[" + monthIndex + "]" %>'

     

    但是使用scriptlet 會導致極端難以閱讀和維護的JSP 頁面。如果使用JSTL,事情會變得更清爽一些:

     

    You have selected month number <c:out value="${monthIndex}"/>
    <c:out value="${calendar.monthSet.month[monthIndex]}"/>

     

    通常,索引屬性是在一個循環內動態訪問的。假設你想要使用Struts logic:iterate標簽顯示月份的列表。這個標簽將在整個Collection 或者數組之上進行迭代。下面是你可以如何以一個排序列表顯示所有月份的例子:

     

    <ol>
    <logic:iterate id="monthName" name="calendar" property="monthSet.months">
        
    <li><bean:write name="monthName"/></li>
    </logic:iterate>
    </ol>

     

    重申一下, JSTL 也是一個替代選擇。JSTL c:forEach標簽將比Struts logic:iterate標簽要容易使用一些。下面是如何使用JSTL來產生上面的同一個排序列表的代碼:

     

    <ol>
    <c:forEach var="monthName" items="${calendar.monthSet.months}">
        
    <li><c:out name="${monthName}"/></li>
    </c:forEach>
    </ol>

     

    相關動作

    第3.4式在JSTL循環中使用索引屬性。

    第3.5式則提供了一個更加詳細的關于在JSTL循環中使用索引屬性的說明。

     

    posted @ 2005-05-30 10:03 鐵手 閱讀(1382) | 評論 (1)編輯 收藏
    使用 WebSphere Application Server V6 構建企業服務總線

    IBM Websphere 中國開發站點有幾篇新的Websphere V6中構建ESB的文章,目前已發表3篇:
    分別是 :

    使用 WebSphere Application Server V6 構建企業服務總線 ——
    第1 部分
      WebSphere V6 消息傳遞資源入門 
    第2 部分: 業務需求以及總線
    第3部分:  簡單的 JMS 消息傳遞實例

    跟蹤中.....

    posted @ 2005-05-27 15:29 鐵手 閱讀(995) | 評論 (1)編輯 收藏
    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 @ 2005-05-27 14:29 鐵手 閱讀(4883) | 評論 (3)編輯 收藏
    Struts秘籍之第2段:第3.1式: 使用JSTL

    第3.1式. 使用JSTL

    問題

    你需要在Struts應用中使用JSTL標簽苦的標簽。

    動作要領

    http://jakarta.apache.org/taglibs下載Jakarta Taglibs JSTL 的參考實現。將jstl.jar和standard.jar文件拷貝到應用程序的WEB-INF/lib文件夾。然后將c.tld, fmt.tld, sql.tld, 和x.tld文件復制到WEB-INF/lib目錄。

    在需要時用JSTL的地方使用適當的taglib指令:

     

    <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> 

     

    Table 3-1列出了JSTL 標簽庫和對應的URI。

    Table 3-1. JSTL 標簽庫URI

    標簽庫

    JSTL 1.0 Taglib URI

    JSTL 1.1 Taglib URI

    Core

    http://java.sun.com/jstl/core

    http://java.sun.com/jsp/jstl/core

    Formatting

    http://java.sun.com/jstl/fmt

    http://java.sun.com/jsp/jstl/fmt

    SQL

    http://java.sun.com/jstl/sql

    http://java.sun.com/jsp/jstl/sql

    XML

    http://java.sun.com/jstl/xml

    http://java.sun.com/jsp/jstl/xml

    Functions

    N/A

    http://java.sun.com/jsp/jstl/functions

     

    動作變化

    JSTL 是一個強大的標簽庫集,完全應該作為Struts 開發者的工具箱之一。JSTL 包含有支持JavaBean 屬性、循環、條件邏輯、以及URL 格式化的標簽。也有格式化和解析日期和數值的標簽。XML 標簽庫可以用來在頁面中解析和處理XML。SQL 標簽庫則可以和關系數據庫交互。Functions 標簽庫提供了一些有功的函數,可用于表達始中,特別是字符串處理。

    這其中最重要的就是Core 標簽庫。這個庫包含了很多可以取代Struts beanlogic標簽的標簽。那為什么要使用這個標簽而不是用Struts 標簽呢?答案是,這些標簽要比Struts 標簽要更強大而更易于使用。但是別搞錯,Struts 項目并不和它是抵觸的。恰恰相反,JSTL 允許Struts 集中于它最擅長的:為強壯的JSP Web應用提供控制器。

    我們來看看如何分別使用JSTL 標簽和Struts 標簽來實現循環和顯示輸出。首先,下面是Struts 版本:

     

    <ul>
        
    <logic:iterate id="cust" name="branch" property="customers">
            
    <li>
                
    <bean:write name="cust" property="lastName"/>
                
    <bean:write name="cust" property="firstName"/>
            
    </li>
        
    </logic:iterate>
    </ul>

     

    使用JSTL,則變得簡單一些:

    <ul>
        
    <c:forEach var="cust" items="${branch.customers}">
            
    <li>
                
    <c:out value="${cust.lastName}, ${cust.firstName}"/>
            
    </li>
        
    </c:forEach>
    </ul>


    后者最酷的地方在于你并不是一定要一個個的進行選擇。JSTL 可以在你便干邊學中使用它。JSP 表達式語言(EL) 使得訪問各種范圍之中的ActionForms 和對象中的數據更加容易。最困難的決策不是你到底用不用JSTL,而是使用哪一個版本的JSTL。如果你使用JSP 2.0/Servlet 2.4 容器,比如Tomcat 5, 你最好使用JSTL 1.1。否則,目前你只能使用JSTL 1.0。

    對于Struts應用來說,我們還是推薦使用JSTL 標簽。

    相關動作

    第3.2式會展示如何在Struts標簽中使用EL 表達式。

    <JavaServer Pages> [Hans Bergsten 著(O'Reilly),機械工業出版中文版]就詳細涉及了JSTL,值得參考。

    Sun 提供了一個JSTL 教程,地址是http://java.sun.com/tutorials/jstl.

    下面地址也有一個快速參考:http://www.jadecove.com/jstl-quick-reference.pdf.

    Manning 的 JSTL in Action也是一本很好的書:http://www.manning.com

     

    posted @ 2005-05-27 13:57 鐵手 閱讀(4574) | 評論 (2)編輯 收藏
    Java百科:Javapedia

    Java.net上有很好的Java相關資源,可以隨時跟蹤一些相關的技術、組件、項目、框架等等。
    其地址是:
    http://wiki.java.net/bin/view/Javapedia

    其中包括:
     

    相關技術:

    最佳實踐

    人物、公司、組織

    posted @ 2005-05-25 10:35 鐵手 閱讀(372) | 評論 (0)編輯 收藏
    僅列出標題
    共26頁: First 上一頁 17 18 19 20 21 22 23 24 25 下一頁 Last 
    主站蜘蛛池模板: 亚洲黄色在线播放| 亚洲一区精品中文字幕| 亚洲成av人在线观看网站| 日本片免费观看一区二区| 亚洲视频中文字幕| 亚洲视频免费在线看| 在线电影你懂的亚洲| 精品国产sm捆绑最大网免费站| 亚洲欧洲高清有无| 亚洲视频在线观看免费视频| 亚洲高清免费在线观看| a拍拍男女免费看全片| 亚洲欧洲av综合色无码| 国产精品久免费的黄网站| 免费播放国产性色生活片| 亚洲日韩在线观看| 毛片在线全部免费观看| 亚洲精品国产情侣av在线| 久久久久久久久免费看无码 | 亚洲va在线va天堂va不卡下载| 久久福利青草精品资源站免费| 久久精品国产亚洲AV电影 | 国产精品免费看久久久 | 国产免费黄色大片| 一级女性全黄生活片免费看| 亚洲精品无码久久久影院相关影片 | 人人玩人人添人人澡免费| 亚洲视频免费播放| 国产男女猛烈无遮挡免费视频网站| 男男黄GAY片免费网站WWW| 久久精品国产亚洲网站| 99久久久国产精品免费无卡顿| 免费播放美女一级毛片| 久久亚洲综合色一区二区三区| 永久免费毛片在线播放| 日本精品久久久久久久久免费 | 久久亚洲伊人中字综合精品| 欧美a级在线现免费观看| 一区二区三区免费电影| 亚洲精品视频在线免费| 国产美女精品久久久久久久免费|