Vikings

          Tapestry 4.0 beta 新特性4-7

          Tapestry4新特性(四)-源代碼標注的異常處理
          Tapestry本來提供的debug功能就十分強大,4.0版本中提供了更加詳細的報錯機制,可以顯示錯誤的代碼,并在報錯的地方加亮標注,具體截圖請看附件(誰能告訴我怎么將多余的照片刪除呀)
          x1pc_jqddVOWRleOL7C8xpqaKS3AGUAvBT1MIRFANda_NKbU4VLeU4oBwzLDK28sn7jVevA1K85S_hQ00Oz6G95NKXye0F245JuqXGvav5vixzNs9HU6A4cW4wlt3uPg1dt.jpg


          Tapestry4新特性(五)-Friendly URLs
          Tapestry4.0以前版本中的URL一直被人所詬病,當然現在已經有很多的解決方
          案,4.0版本中已經對此做了改進,
          因為現在的版本需要通過hivemind來配置,所以需要設置hivemind.xml中的一些屬
          性,具體配置如下:
          <?xml version="1.0"?> 
          <module id="tapestry4" version="1.1.0">
           <contribution configuration-id="tapestry.url.ServiceEncoders">
            <page-service-encoder id="page" extension="html" service="page"/>
            <direct-service-encoder id="direct" stateless-extension="direct"
             stateful-extension="sdirect"/>
            <asset-encoder id="asset" path="/assets/"/>
            <extension-encoder id="extension" extension="svc" after="*"/>
           </contribution>
          </module>

          同時web.xml中加入映射:
          <servlet>
          <servlet-name>tapestry4</servlet-name>
          <servlet-class> org.apache.tapestry.ApplicationServlet</servlet-class>
          <load-on-startup>0</load-on-startup>
          </servlet>
          <servlet-mapping>
          <servlet-name>tapestry4</servlet-name>
          <url-pattern>*.html</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
          <servlet-name>tapestry4</servlet-name>
          <url-pattern>*.direct</url-pattern>
          </servlet-mapping>

          <servlet-mapping>
          <servlet-name>tapestry4</servlet-name>
          <url-pattern>*.sdirect</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
          <servlet-name>tapestry4</servlet-name>
          <url-pattern>/assets/*</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
          <servlet-name>tapestry4</servlet-name>
          <url-pattern>*.svc</url-pattern>
          </servlet-mapping>
          如果希望首頁的調用不是通過/app來映射,可以在web.xml中更改redirect:
          <filter-name>redirect</filter-name>
          <filter-class>org.apache.tapestry.RedirectFilter</filter-class>
          <init-param>
          <param-name>redirect-path</param-name>
          <param-value>/Home.html</param-value>
          </init-param>
          </filter>
          這樣鍵入http://localhost:8080/tapestry4,系統導航到http://localhost:
          8080/tapestry4/Home.html,
          添加一個Page頁面例如Test.page,在Home.html中加入<a href="#"
          jwcid="@PageLink" page="Test">test</a>,
          在生成的Home.html中生成的test的鏈接地址為:http://localhost:
          8080/tapestry4/Test.html

          Tapestry4新特性(六)-自動定位頁面類文件

          關于此特性的介紹請參考:http://jakarta.apache.org/tapestry/current/UsersGuide/page-class.html 說明:
          通俗點說就是您可以不定義.page文件或者定義的.page文件中不指定class 屬性,而讓服務器自動根據.html文件的路徑來尋找對應的類文件。 配置:
          在.application的定義文件中添加: 這樣如果在文檔根目錄下有個Home.html文件,你就可以將Home.java放到 org.edynasty.pages(實際開發中配置為您自己的包名)包中,tapestry自動根據 Home.hmtl構造org.edynasty.pages.Home來定位頁面的類文件,當然您也可以在WEB -INF目錄下放一個Home.page,不需要定義class屬性,tapestry自動按照上邊的原 理定位。 效果:
          這樣您可以不需要維護.page中的class屬性,直接根據.html文件來寫對應 的類文件。而且可以根據業務邏輯來定義目錄結構,例如將 org.edynasty.pages.user定義為user相關的類,.html也就可以放到user目錄下 邊,目錄結構如下: user/ListUsers.html user/EditUser.html course/ListCourses.html course/EditCourses.html Home.html


          Tapestry4新特性(七)-Application和Session范圍對象的使用
          Application和Session范圍對象的使用

          關于此特性的介紹請參考:http://jakarta.apache.org/tapestry/UsersGuide/state.html
          說明:
          Application和Session范圍的概念就不說了,T4以前的版本只可以分別指定一個對象,
          以前版本的定義如下:
          <property name="org.apache.tapestry.visit-class" value="your.package.Visit"/>
          <property name="org.apache.tapestry.global-class" value="your.package.Global"/>,
          T4中可以指定任意多的對象,而且默認的visit和global仍然可以使用。

          配置:在hivemodule.xml的定義文件中添加:
          <contribution configuration-id="tapestry.state.ApplicationObjects">
          <state-object name="applicationUser" scope="application">
          <create-instance class="org.edynasty.model.User"/>
          </state-object>
          <state-object name="sessionUser" scope="session">
          <create-instance class="org.edynasty.model.User"/>
          </state-object>
          </contribution>
          兩個user分別對應Application和Session范圍,在需要使用user的page中注入:
          <inject property="applicationUser" type="state" object="applicationUser"/>
          <inject property="sessionUser" type="state" object="sessionUser"/>,通過
          getter和setter方法調用。

          效果:怎么說呢,可以不需要在一個visit中定義N多屬性,因為Session的創建需要資源,
          只要操作一個visit的屬性,就需要創建整個visit,分別定義之后,可以在需要存取時分別創建。

          posted on 2005-11-08 18:00 Vikings 閱讀(433) 評論(0)  編輯  收藏 所屬分類: frame-work

          主站蜘蛛池模板: 万荣县| 平江县| 登封市| 海宁市| 静海县| 苍南县| 东光县| 晋城| 仙游县| 隆回县| 威海市| 宁城县| 射洪县| 莱芜市| 岫岩| 册亨县| 绍兴市| 绥江县| 定陶县| 鲁甸县| 故城县| 阿城市| 东兴市| 蓬溪县| 山阳县| 建水县| 且末县| 花莲县| 三都| 盐山县| 兴安盟| 南京市| 砚山县| 南溪县| 丹江口市| 邹城市| 鸡东县| 碌曲县| 潢川县| 牡丹江市| 察哈|