html:link 標籤的使用[轉]

 

<html:link> 標籤用於生成HTML <a> 元素。<html:link> 在創建超鏈接時,有兩個優點:
(1) 允許在URL 中以多種方式包含請求參數。
(2) 當用戶瀏覽器關閉Cookie 時,會自動重寫URL,把SessionID 作爲請求參數包含在URL 中,用於跟蹤用戶的Session 狀態。

<html:link> 標籤有以下重要屬性:
(1) forward:指定全局轉發鏈接。
(2) href:指定完整的URL 鍵接。
(3) page:指定相對於當前網頁的URL。

(4) action:指向一個action。

        <html:rewrite> 用於輸出超鏈接中的URI部分,但它並不生成HTML <a> 元素。URI指的是URL 中協議、主機和端口以後的內容。URI 用於指定具體的請求資源。例如,對於URL:HTTP://localhost:8080/HtmlBasic.do,它的URI爲/HtmlBasic.do

示例:
1、創建全局轉發鏈接
    首先,在Struts-config.xml 中<global-forwards> 元素中定義一個<forward> 元素:
   

    <global-forwards>
        <forward name = "index" path="/index.jsp"/>
    </global-forwards>


    接着,在JSP 文件中創建<html:link> 標籤:
    <html:link forward="index">
        Link to Global ActionForward
    </html:link>


    <html:link> 標籤的forward 屬性和<global-forwards> 元素中的<forward> 子元素匹配。以上代碼生成如下HTML 內容:
    <a href="/index.jsp">Link to Global ActionFoward</a>
    值得注意的是,<html:link> 的forward 屬性只引用Struts-config.xml 配置文件中<global-forwards>內的<forward> 子元素,如果引用<action> 內的<forward> 子元素,在運行時將會拋出異常:
    Cannot create rewrite URL: Java.Net.MalfomedURlException: Cannot retrieve ActionForward

2、創建具有完整URL 的鏈接
    如果Web 應用需要鏈接到其他站點,應該給出其他站點完整URL,例如:


    <html:link href="http://jakarta.apache.org/struts/index.html">
        Generate an "href" directly
    </html:link>


    生成HTML 代碼如下:
    <a href="http://jakarta.apache.org/struts/index.html">Generate an "href" directly</a>
    值得注意的是,如果指定了<html:link> 標籤的href 屬性,即使用戶瀏覽器的Cookie 關閉,<html:link> 標籤也不會把用戶SessionID 作爲請求參數加和到URL 中。

3、從當前網頁中創建相對URL
    如果從一個網頁鏈接到同一個應用中的另一網頁,可以採用以下方式:


    <html:link page="/HtmlBasic.do">
        A relative link from this page
    </html:link>
    <html:link> 標籤的 page 屬性用於指定相對於當前應用的URI。以上代碼生成如下HTML 內容:
    <a href="/lib/HtmlBasic.do">......</a>

4、在URL 或 URI 中包含請求參數
    如果要在URL或URI 中包含請求參數,只要把請求參數加在URL 或 URI的末尾就可以了。例如:
    <html:link page="/HtmlBasic.do?prop1=abc&amp;prop2=123">
        Hard-code the url parameters
    </html:link>
    <!-- or -->
    <html:rewrite page="/HtmlBasic.do?prop1=abc&amp;prop2=123"/>
    以上代碼生成如下HTML 內容:
    <a href=/lib/HtmlBasic.do?prop1=abc&amp;prop2=123">......</a>
    rewrite: /HtmlBasic.do?prop1=abc&amp;prop2=123

    提示:在HTML 中&amp 代表特殊字符 "&"

5、在URL 或 URI 中包含單個請求變量
                 
        如果要在URL 中包含一個請求參數,而這人蔘數的值存在於當前網頁可訪問的一個變量中,可以按以下方法來實現。
        爲了演示這一功能,首先創建一個當前網頁可訪問的變量。例如,本例中創建了兩個變量,一個是字符類型,一個是CustomerBean , 它們存存於一個 page 範圍內:
    <%
        /*
         * Create a string object to store as a bean in
         * the page content and embed in this link
         */
        String stringBean = "Value to Pass ont URL";
        pageContext.setAttribute("stringBean", stringBean);
    %>
    <jsp:useBean id = "customerBean" scope="page" class="htmltaglibs.beans.CurstomerBean"/>
    <jsp:setProperty name="customerBean" property="name" value="weiqin"/>
        接着,把這兩個變量作爲請求參數,加入到URL或URI 中:
    <html:link page="/HtmlBasic.do"
                      paramId="urlParamName"
                      paramName="stringBean">
        URL encode a parameter based on a string bean value
    </html:link>
    <html:link page="/HtmlBasic.do"
                       paramId="urlParamName"
                       paramName="customerBean"
                       paramProperty="name">
        URL encode a parameter based on a customer bean value
    </html:link>

    rewrite: <html:rewrite page="/HtmlBasic.do"
                                           paramId="urlParamName" paramName="stringBean"/>
    rewrite: <html:rewrite page="/HtmlBasic.do"                                           
                                           paramId="urlParamName" paramName="customerBean"
                                           paramProperty="name"/>

    <html:link> 標籤的 paramId 屬性指定請求參數名,paramName 屬性指定變量的名字。如果變量爲JavaBean ,用paramProperty 屬性指定JavaBean 的屬性。
    對於本例的stringBean,請求參數值爲stringBean 的字符串值。對於customerBean,指定了paramProperty 屬性,請求參數值爲customerBean 的 name 屬性值。
    以上代碼生成如下HTML 內容:
    <a href="/HtmlBasic.do?urlParamName=Value to Pass on Url">
        Url encode a paramter based on a string bean value
    </a>

    <a href="/HtmlBasic.do?urlParamName=weiqin">
        url encode a parameter based on a customer bean value
    </a>

    rewrite: /HtmlBasic.do?urlParamName=Value to Pass on Url
    rewrite: /HtmlBasic.do?urlParamName=weiqin
6、在URL 或 URI 中包含多個請求變量
    如果在URL 或 URI 中包含多個請求參數,而這些參數的值來自多個變量,需要先定義一個Map類型的java 類,如java.util.HashMap,用它來存放請求變量。例如:
    <%
        /*
         * Strore values int a Map(HashMap in this case)
         * and construct the URL based on the Map
         * /
        java.util.HashMap myMap = new java.util.HashMap();
        myMap.put("myString", new String("myStringValue"));
        myMap.put("myArray" , new String[]{"str1","str2","str3"} );
        pageContext.setAttribute("map", myMap);
    %>
    在以上代碼的HaspMap 中存放了兩個對象,其中第二個對象是個字符串數組。HashMap 被存放在PageContext 中。 接下來就可以把這個HashMap 作爲請求參數,加入到URL 或 URI 中:
    <%-- For this version of the <html:link> tag: --%>
    <%-- map = a map with name/value pairs to pass on the url --%>
    <html:link page="/HtmlBasic.do" name="map">
        URL encode a parameter based on value in a Map
    </html:link>
    <%-- Create the same rewrite string for the above link. --%>
    rewrite:<html:rewrite page="/HtmlBasic.do" name="map"/>

    <html:link> 標籤的name 屬性指定包含請求變量的HashMap 對象。HashMap 對象中的每一對"key/value" 代表一對或多對"請求參數名/請求參數值"。以上代碼生成如下的Html 內容:
    <a href="/HtmlBasic.do?myString=myStringValue&amp;myArray=str1&amp;myArray=str2&amp;myArray=str3">
        URL encode a parameter based on value in a Map
    </a>
   
    rewrite:/HtmlBasic.do?myString=myStringValue&amp;myArray=str1&amp;myArray=str2&amp;myArray=str3

[轉]自 http://www.cnblogs.com/Fskjb/archive/2011/04/11/2012983.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章