<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) 評(píng)論(0)  編輯  收藏 所屬分類: Struts2.0

    Results / View Technologies

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

    結(jié)果類型和視圖技術(shù)的使用緊密相聯(lián).在前面的章節(jié),我們看到如果"type"屬性無(wú)值或是值為"dispatcher",就會(huì)將使用JSPs來(lái)渲染.在Struts2應(yīng)用中,還有三種其他的技術(shù)可以替換JSPs:

    • Velocity Templates
    • Freemarker Templates
    • XSLT Transformations

    記住,你同樣可以從現(xiàn)有的視圖技術(shù)實(shí)現(xiàn)一種新的結(jié)果類型.那時(shí)你將獲得額外的可用結(jié)果.

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

     

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

     

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

     

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

     

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

    Tag Libraries

    標(biāo)簽庫(kù)通常用來(lái)定義為JSP一種專用的特征,來(lái)提供可復(fù)用性.Freemarker和Velocity有不同的概念;反之,他們?yōu)殇秩疽嫣峁┝艘环N模型或上下文,和開(kāi)始渲染的模版所能訪問(wèn)到的所有的那些對(duì)象.當(dāng)我們?cè)赟truts2中講到標(biāo)簽庫(kù),我們討論的是提供與JSP標(biāo)答庫(kù)提供相同功能的對(duì)象,它們與所有的視圖技術(shù)相似-JSP,Velocity和Freemarker.

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

    JSP標(biāo)簽庫(kù)還有另外一個(gè)特征,在今天的WEB開(kāi)發(fā)環(huán)境中看起來(lái)已經(jīng)是過(guò)時(shí)的了-直接在標(biāo)簽庫(kù)本身的Java代碼里寫(xiě)顯示的文本.Strust2轉(zhuǎn)變了思想,為標(biāo)簽創(chuàng)建一個(gè)專有的MVC模式.邏輯在Java類內(nèi)提供,但被放到Freemarker模版中渲染(這是默認(rèn)的).整體的結(jié)構(gòu)如下:

    Starting Struts2 OnLine

    結(jié)構(gòu)的核心是對(duì)組件對(duì)句的設(shè)置.這個(gè)組件提供了每個(gè)標(biāo)簽最基本的表現(xiàn)形式,并提供一些必要的邏輯,以及管理的渲染的模版.每個(gè)不同的結(jié)果/視圖技術(shù),都提供了對(duì)組件的包裝.包裝器提供了對(duì)

    當(dāng)同F(xiàn)reemarker模版一起使用標(biāo)簽庫(kù)渲染的時(shí)候,還有一個(gè)額外的配置是必須的.一個(gè)額外的Servlet需要配置在"web.xml"文件中,這樣Freemarker可以在渲染時(shí)獲得它所需要的信息:

     

    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> 

     

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

    這里有三種常用的主題:"simple", "xhtml"和"css_xhtml"."simple"主題提供不使用任何格式化的標(biāo)簽."xhtml"主題將進(jìn)行進(jìn)一步的格式化;對(duì)于HTML的form標(biāo)簽,這個(gè)主題使用HTML表格提供兩列的格式化.對(duì)于CSS的純化論者,有一種"css_xhtml"主題.與"xhtml"主題相似,這種主題同樣提供了格式化;不過(guò)是使用CSS DIV替換了HTML表格.附加的格式化提供給開(kāi)發(fā)者,對(duì)HTML沒(méi)有增加額外的混亂.

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

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


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

    下一章:Starting Struts2--Architectural Goals


    PS:第三章終于結(jié)束了......

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

    Copyright © puras

    主站蜘蛛池模板: 亚洲最大的成人网| 亚洲日韩VA无码中文字幕 | 久久久久se色偷偷亚洲精品av| 亚洲AV无码成人网站久久精品大| 亚洲精品卡2卡3卡4卡5卡区| 亚洲欧洲日产国码无码网站 | 丁香花免费高清视频完整版| 2021久久精品免费观看| 亚洲免费福利在线视频| 一二三四免费观看在线视频中文版| 波多野结衣免费在线| 最近2019中文字幕mv免费看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 最近最新中文字幕完整版免费高清 | 国产成人精品久久亚洲高清不卡 | 美女18一级毛片免费看| 一级做受视频免费是看美女| 亚洲精品国产日韩无码AV永久免费网 | 自拍偷自拍亚洲精品被多人伦好爽| 国产亚洲精品AA片在线观看不加载| 亚洲男人的天堂www| 亚洲男人天堂av| 亚洲伊人久久大香线蕉结合| 亚洲国产无线乱码在线观看| 曰批免费视频播放免费| 中文字幕无码免费久久| 最好看最新的中文字幕免费| 毛片高清视频在线看免费观看| 免费国产成人高清在线观看麻豆 | 啦啦啦www免费视频| 亚洲午夜精品一级在线播放放| 久久亚洲精品中文字幕三区| 亚洲妇女水蜜桃av网网站| 亚洲欧洲无码一区二区三区| 一级毛片免费播放视频| 亚欧免费一级毛片| 黄网址在线永久免费观看| 久久青青草原亚洲av无码| 777亚洲精品乱码久久久久久| 亚洲无人区码一二三码区别图片| 四虎影视永久在线精品免费|