Struts2教學
Struts2快速入門
Struts2 MVC架構
Struts2 是什麼?
Struts2 環境配置
Struts2 體系結構
Struts2 Hello World 實例
Struts2 配置文件
Struts2 Action/動作
Struts2 攔截器
Struts2 結果和結果類型
Struts2 值棧/OGNL
Struts2 文件上傳
Struts2 MySQL數據庫訪問
Struts2 發送郵件Email
Struts2 驗證框架
Struts2 基於XML校驗
Struts2 本地化/國際化(i18n)
Struts2 類型轉換
Struts2 主題和模板
Struts2 異常處理
Struts2 註釋
Struts2 註釋類型
Struts2 控件標籤
Struts2 iterator標籤
Struts2 if/else標籤
Struts2 merge標籤
Struts2 append標籤
Struts2 generator標籤
Struts2 數據標籤
Struts2 action標籤
Struts2 include標籤
Struts2 bean 標籤
Struts2 date 標籤
Struts2 param 標籤
Struts2 property 標籤
Struts2 set 標籤
Struts2 text 標籤
Struts2 url標籤
Struts2 表單標籤
Struts2 Ajax 標籤
Struts2和Spring集成
Struts2和Tiles集成
Struts2和Hibernate集成
Struts 2 hello world (XML版本)
Struts2註解示例
Struts2 @ResultPath註釋示例
Struts2 include(包含)多個配置文件
Struts2命名空間配置和解釋
Struts2開發者模式
如何刪除Struts2動作的後綴擴展名
使用Struts2動作
Struts2的ActionError&ActionMessage示例
Struts2模型驅動實例
Struts2映射攔截動作
Struts2重寫攔截器參數
Struts2攔截器棧的例子
Struts2 execAndWait攔截器例子
Struts2 <s:textfield>文本示例
Struts2 <s:password>密碼示例
Struts2 <s:hidden>隱藏值例子
Struts2 <s:textarea>文本域實例
Struts2 <s:radio>單選按鈕例子
Struts2單選預選按鈕值
Struts2 <s:checkbox>複選框例子
Struts2設置多個複選框缺省值
Struts2 <s:checkboxlist>多個複選框例子
Struts2 <s:select>下拉框例子
Struts2自動選擇下拉框的值
Struts2 <s:combobox>組合框的例子
Struts2 <s:head>示例
Struts2文件上傳例子
Struts2上傳多個文件例子
Struts2 <s:doubleselect>示例
Struts2 <s:updownselect>示例
Struts2 <s:optiontransferselect>示例
Struts2 <sx:datetimepicker>示例
Struts2 <sx:autocompleter>自動提示例子
Struts2 autocompleter+JSON例子
Struts2 <s:iterator>迭代器標籤示例
Struts2 if,elseif,else標籤示例
struts2 <s:append>標籤示例
Struts2 <s:generator>標籤示例
Struts2 <s:merge>標籤示例
Struts2 <s:sort>標籤示例
Struts2 <s:subset>標籤示例
Struts2 <s:a>標籤示例
Struts2 <s:action>標籤示例
Struts2 <s:bean>標籤示例
Struts2 <s:date>標籤示例
Struts2 <s:debug>標籤示例
Struts2 <s:include>標籤示例
Struts2 <s:i18n>標籤示例
Struts2 <s:param>標籤示例
Struts2 <s:property>標籤實例
Struts2 <s:push>標籤示例
Struts2 <s:set>標籤示例
Struts2 <s:texttag>標籤示例
Struts2 <s:url>標籤示例
Struts2資源包使用示例
Struts2本地化和國際化
Struts2 key鍵屬性示例
Struts2中文本地化問題
如何配置Struts2全局資源包
Struts2+Spring集成實例
Struts2+Quartz2調度集成實例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2+Hibernate集成實例
Struts2+Spring+Hibernate集成實例
Struts2+Log4j集成
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什麼不同?
Struts2獲取HttpServletRequest實例
Struts2獲取HttpServletResponse實例
如何獲取ServletContext對象
Struts2配置Action類的靜態參數
Struts2下載文件實例
Struts2和JSON實例

Struts2 主題和模板

實際本章教程開始之前,讓我們看看由http://struts.apache.org給出的幾個定義:

Term

描述

tag

A small piece of code executed from within JSP, FreeMarker, or Velocity.

template

A bit of code, usually written in FreeMarker, that can be rendered by certain tags (HTML tags).

theme

A collection of templates packaged together to provide common functionality.

我也建議去通過Struts2本土化章節,因爲我們將採取同樣的例子,再次執行我們的練習。 

當使用Struts 2 標籤如<s:submit...>,<s:textfield...>等在網頁中,Struts 2框架生成HTML代碼與預先設定的樣式和佈局。 Struts 2自帶內置的主題有三個:

Theme

描述

simple theme

A minimal theme with no "bells and whistles". For example, the textfield tag renders the HTML tag without a label, validation, error reporting, or any other formatting or functionality.

xhtml theme

This is the default theme used by Struts 2 and provides all the basics that the simple theme provides and adds several features like standard two-column table layout for the HTML, Labels for each of the HTML, Validation and error reporting etc.

css_xhtml theme

This theme provides all the basics that the simple theme provides and adds several features like standard two-column CSS-based layout, using

for the HTML Struts Tags, Labels for each of the HTML Struts Tags, placed according to the CSS stylesheet.

正如上面所提到的,如果不指定一個主題,然後Struts2中會使用默認的XHTML主題。例如Struts 2中選擇標籤:

<s:textfield name="name" label="Name" />

生成HTML標記:

這裏empinfo struts.xml文件中定義動作名稱。

選擇主題:

可以指定主題Struts 2每一個標籤的基礎上或指定的主題Struts 2使用,可以使用下列方法之一:

  • 主題屬性的具體標籤

  • 主題屬性標籤的周邊表單標籤

  • 頁面範圍的屬性,名爲「主題」

  • 請求範圍屬性名爲「主題」

  • 會話作用域屬性命名爲「主題」

  • 應用程序作用域的屬性命名爲「主題」

  • 在struts.properties struts.ui.theme屬性(默認爲XHTML)

以下語法指定他們在標籤級別,如果願意爲不同的標籤使用不同的主題:

<s:textfield name="name" label="Name" theme="xhtml"/>

因爲它不是非常實用,每個標籤的基礎上使用主題,所以乾脆我們可以指定規則struts.properties文件中使用以下標籤:

# Standard UI theme struts.ui.theme=xhtml # Directory where theme template resides struts.ui.templateDir=template # Sets the default template type. Either ftl, vm, or jsp struts.ui.templateSuffix=ftl

以下的結果是,我們拿起從本地化章節裏我們使用默認設置struts.ui.theme= XHTML的struts-default.properties文件中,默認情況下,在 struts2-core.xy.z.jar文件,這是由主題。

English

主題如何工作的?

對於一個給定的主題,每一個struts標籤有關聯的模板,如:s:textfield -> text.ftl 和 s:password -> password.ftl等,這些模板文件來壓縮struts2-core.xy.z.jar文件。這些模板文件保持一個預先定義的HTML佈局爲每個標籤。所以Struts2 框架生成最終的HTML標記代碼使用Sturts標籤和相關的模板。

Struts 2 tags + Associated template file = Final HTML markup code.

默認模板已經寫在FreeMarker和他們有擴展名 .ftl。可以設計使用速度或JSP模板,並據此設置配置在使用struts.ui.templateSuffix 和 struts.ui.templateDir struts.properties。

創建新的主題:

最簡單的方法來創建一個新的主題是複製現有的任何主題/模板文件,並做必要的修改。所以,讓我們開始創建一個文件夾 WebContent/WEB-INF/classes 名爲模板和子文件夾與我們新的主題的名稱,例如WebContent/WEB-INF/classes/template/mytheme。從這裏,可以從頭開始構建模板,或者可以複製​​模板從Struts2分佈和根據需要進行修改。

我們要修改現有的默認模板XHTML學習目的。所以,現在讓,我們複製內容從 struts2-core-x.y.z.jar/template/xhtml 到我們的主題目錄,並只修改WebContent/WEB-INF/classes/template/mytheme/control.ftl文件。當我們打開control.ftl 它將有下面幾行:

<#if parameters.cssStyle??> style="${parameters.cssStyle?html}"<#rt/> >

讓我們上述文件control.ftl改變有以下內容:

如果檢查看 form.ftl 會發現,control.ftl 這個文件中,form.ftl這個文件是指從XHTML主題。因此,讓我們改變如下:

<#include "/${parameters.templateDir}/xhtml/form-validate.ftl" />
<#include "/${parameters.templateDir}/simple/form-common.ftl" />
<#if (parameters.validate?default(false))>
onreset="${parameters.onreset?default('clearErrorMessages(this);
clearErrorLabels(this);')}"
<#else>
<#if parameters.onreset??> onreset="${parameters.onreset?html}"
</#if>
</#if>

<#include "/${parameters.templateDir}/mytheme/control.ftl" />

我假設不會有太多瞭解FreeMarker模板語言,仍然尋找FTL文件需要做什麼,可以得到一個不錯的主意。然而,讓我們除上述變動外,並回到我們的本地化的例子,創建 WebContent/WEB-INF/classes/struts.properties 檔案的以下內容:

# Customized them struts.ui.theme=mytheme # Directory where theme template resides struts.ui.templateDir=template # Sets the template type to ftl. struts.ui.templateSuffix=ftl

現在這種變化後,右鍵點擊項目名稱,並單擊Export > WAR File創建一個WAR文件。然後部署此WAR在Tomcat的webapps目錄下。最後,啓動Tomcat服務器和嘗試訪問URL http://localhost:8080/HelloWorldStruts2。這會給出以下畫面: 

Theme

XHTML主題複製後的變化,我們做了主題這是一個結果,可以看到一個表單組件周圍的邊框。 FreeMarker學習,如果你努力,那麼將能夠創建或修改主題很容易。至少現在,你必須有一個基本的瞭解Sturts2主題和模板。


Copyright © 2015-2023 億聚網.