堅持走自己的路……
一、SiteMesh項目簡介
?????
??? ??? 注意過濾器的位置:應該在struts2的org.apache.struts2.dispatcher.FilterDispatcher過濾器之前org.apache.struts2.dispatcher.ActionContextCleanUp過濾器之后,否則會有問題;??????4、在下載的SiteMesh包中找到sitemesh.xml,(\sitemesh-2.3\src\example-webapp\WEB-INF目錄下就有)
??? ??? 將其拷貝到/WEB-INF目錄下;??????5、在sitemesh.xml文件中有一個property結點(如下),該結點指定了decorators.xml在工程中的位置,讓sitemesh.xml能找到他;按照此路徑新建decorators.xml文件,當然這個路徑你可以任意改變,只要property結點的value值與其匹配就行;
???????? 6、在WebRoot目錄下新建decorators目錄,并在該目錄下新建一個模板jsp,根據具體項目風格編輯該模板,如下示例:我的模板:main.jsp
這就是個簡單的模板,頁面的頭和腳都由模板里的靜態HTML決定了,主頁面區域用的是<decorator:body />標簽;也就是說凡是能進入過濾器的請求生成的頁面都會默認加上模板上的頭和腳,然后頁面自身的內容將自動放到<decorator:body />標簽所在位置;<decorator:title?default="Welcome?to?test?sitemesh!"?/>:讀取被裝飾頁面的標題,并給出了默認標題。<decorator:head?/>:讀取被裝飾頁面的<head>中的內容;<decorator:body?/>:讀取被裝飾頁面的<body>中的內容;?????7、說到這里大家就要想了,那如果某個特殊的需求請求路徑在過濾器的范圍內,但又不想使用模板怎么辦?你總不能這么不講道理吧!????????大家放心吧,SiteMesh早就考慮到這一點了,上面第5步說道的decorators.xml這個時候就起到作用了!????????下面是我的decorators.xml:
decorators.xml有兩個主要的結點:??????decorator結點指定了模板的位置和文件名,通過pattern來指定哪些路徑引用哪個模板??????excludes結點則指定了哪些路徑的請求不使用任何模板如上面代碼,/index.jsp和凡是以/login/開頭的請求路徑一律不使用模板;另外還有一點要注意的是:decorators結點的defaultdir屬性指定了模板文件存放的目錄;六、實戰感受?????剛剛做完一個用到sitemesh的項目,跟以前用tiles框架相比,最大的感受就是簡單,系統設計階段就把模板文件和sitemesh框架搭好了!哪些頁面使用框架哪些不使用,全部都通過UI Demo很快就定義出來了;在接下來的開發中所有成員幾乎感受不到sitemesh的存在,各自僅僅關心自己的模塊功能實現;
Copyright @ kangxm Powered by: .Text and ASP.NET Theme by: .NET Monster