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

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

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

    Starting Struts2--Core Components(4)

    Posted on 2007-08-10 16:33 puras 閱讀(1300) 評論(0)  編輯  收藏 所屬分類: Struts2.0

    Results / View Technologies

    目前為止的所有例子,都是假定JSP為渲染視圖的技術.盡管它可能是最普通的,但它決不是渲染結果的唯一方法.

    結果類型和視圖技術的使用緊密相聯.在前面的章節,我們看到如果"type"屬性無值或是值為"dispatcher",就會將使用JSPs來渲染.在Struts2應用中,還有三種其他的技術可以替換JSPs:

    • Velocity Templates
    • Freemarker Templates
    • XSLT Transformations

    記住,你同樣可以從現有的視圖技術實現一種新的結果類型.那時你將獲得額外的可用結果.

    除了個別的語法不同,Freemarker和Velocity都與JSP非常相似.所有的action的屬性(通過getter方法)在模版中都是可用的,以及JSP標簽庫和在標簽庫內使用OGNL.在actions配置中可以很容易的將JSP模版的名稱替換成Velocity或是Freemarker模版中的任何一個.這里演示了如果配置Freemarker結果來替代JSP被返回:

     

    1<action name="my" class="com.fdar.infoq.MyAction" >
    2        <result type="freemarker">view.ftl</result>
    3</action> 

     

    XSLT結果稍有不同.不僅是使用stylesheet名稱替換掉模版名稱,還有額外的參數將被用到."stylesheetLocation"參數提供了渲染XML所使用的stylesheet的名稱.如果沒有這個參數,將返回給用戶沒有轉換的XML.exposedValue屬性提供action的屬性或是一個OGNL表達式暴露給XML.如果這個參數沒有指定,這個action本身將暴露給XML.

     

    1<result type="xslt">
    2    <param name="stylesheetLocation">render.xslt</param>
    3    <param name="exposedValue">model.address</param>
    4</result> 

     

    使用XSLT做為結果,"struts.properties"配置屬性同樣可用.名字為"struts.xslt.nocache"的屬性,決定stylesheet是否被緩存.在開發期間,考慮到更快的開發周期,你可能將想要移除一些緩存,然而,當應用發布到應用環境,緩存stylesheet將提高渲染的性能.

    Tag Libraries

    標簽庫通常用來定義為JSP一種專用的特征,來提供可復用性.Freemarker和Velocity有不同的概念;反之,他們為渲染引擎提供了一種模型或上下文,和開始渲染的模版所能訪問到的所有的那些對象.當我們在Struts2中講到標簽庫,我們討論的是提供與JSP標答庫提供相同功能的對象,它們與所有的視圖技術相似-JSP,Velocity和Freemarker.

    在定義標簽庫方面還有很多的形式,但最基本的功能是一樣的--提供對對象方法的訪問.邏輯的壓縮改善了可維護性,并且減少了復制和粘貼代碼的誘惑.

    JSP標簽庫還有另外一個特征,在今天的WEB開發環境中看起來已經是過時的了-直接在標簽庫本身的Java代碼里寫顯示的文本.Strust2轉變了思想,為標簽創建一個專有的MVC模式.邏輯在Java類內提供,但被放到Freemarker模版中渲染(這是默認的).整體的結構如下:

    Starting Struts2 OnLine

    結構的核心是對組件對句的設置.這個組件提供了每個標簽最基本的表現形式,并提供一些必要的邏輯,以及管理的渲染的模版.每個不同的結果/視圖技術,都提供了對組件的包裝.包裝器提供了對

    當同Freemarker模版一起使用標簽庫渲染的時候,還有一個額外的配置是必須的.一個額外的Servlet需要配置在"web.xml"文件中,這樣Freemarker可以在渲染時獲得它所需要的信息:

     

    1<servlet>
    2    <servlet-name>jspSupportServlet</serlet-name>
    3    <servlet-class>
    4        ….action2.views.JspSupportServlet.JspSupportServlet
    5    </servlet-class>
    6    <load-on-startup>10</load-on-startup>
    7</servlet> 

     

    每個組件同樣有模版與之關聯.如果原始標簽包含其他標簽(例如form標簽),將有一個開始模版和一個關閉模版.如果原始標簽只包含它自己(如checkbox標簽),將只有一個關閉模版.并提供了在文本和UI結果中的邏輯的分離,為標簽使用模版還提供了另外一個好處-它允許開發者對相同的標簽混合和匹配不同的模版,利用稱為"主題"的特性.

    這里有三種常用的主題:"simple", "xhtml"和"css_xhtml"."simple"主題提供不使用任何格式化的標簽."xhtml"主題將進行進一步的格式化;對于HTML的form標簽,這個主題使用HTML表格提供兩列的格式化.對于CSS的純化論者,有一種"css_xhtml"主題.與"xhtml"主題相似,這種主題同樣提供了格式化;不過是使用CSS DIV替換了HTML表格.附加的格式化提供給開發者,對HTML沒有增加額外的混亂.

    "xhtml"和"css_xhtml"主題是非常好的例子,程序員可以自己實現個主題,為HTML提供特定的格式化.主題可以被混合或匹配到相同的頁面,并且當前標簽的主題使用"theme"屬性定義.如果你一直使用一個主題,它可以通過"struts.properties"配置文件的"struts.ui.theme"屬性配置默認使用.

    主題提供為所有的標簽種類(控制標簽,數據標簽,Form標簽和非Form的UI標簽);然而,創建新的主題只能作用于可視的Form標簽.


    上一章:Starting Struts2--Core Components(3)

    下一章:Starting Struts2--Architectural Goals


    PS:第三章終于結束了......

    posts - 47, comments - 124, trackbacks - 0, articles - 0

    Copyright © puras

    主站蜘蛛池模板: 免费无码不卡视频在线观看| 国产99视频精品免费视频7| 国产免费久久精品久久久| 日本亚洲国产一区二区三区| 亚洲性无码av在线| 精品多毛少妇人妻AV免费久久| 精品福利一区二区三区免费视频 | 国产精品公开免费视频| 亚洲av永久无码精品漫画| 久久精品国产亚洲av天美18| 91青青青国产在观免费影视| 免费国内精品久久久久影院| 亚洲色图.com| 成在线人免费无码高潮喷水| 成人午夜性A级毛片免费| 亚洲AV无码精品色午夜果冻不卡 | 黄色视频在线免费观看| 男人的好免费观看在线视频| 国产亚洲一区二区精品| 久久人午夜亚洲精品无码区| 最新黄色免费网站| 国产亚洲精久久久久久无码AV| 亚洲va久久久久| 3d成人免费动漫在线观看| 久久精品国产精品亚洲下载| 亚洲欧美国产国产一区二区三区| 9277手机在线视频观看免费| 亚洲一区二区三区乱码A| 亚洲色大18成人网站WWW在线播放| 国产在线精品免费aaa片| 亚洲国产高清精品线久久| 国产精品亚洲专区在线观看| 日韩免费高清大片在线| 国产亚洲成归v人片在线观看 | 亚洲大成色www永久网站| 国产精品久久亚洲一区二区| 在线观看AV片永久免费| 日韩精品亚洲人成在线观看| 国产一级a毛一级a看免费视频| 免费a级毛片永久免费| 亚洲中文字幕久久久一区|