介绍

当您使用一个Struts 2标签时,例如 <s:select ..../>  在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局。样式和布局取决于为标签们设置的Struts 2主题。Struts 2有三个内置的主题:简单、xhtml和cssxhtml。如果您没有指定主题,那么Struts 2将默认使用xhtml主题。

本帖地址 struts2官方 中文教程 系列十四:主题Theme 即 http://www.cnblogs.com/linghaoxinpian/p/7047347.html

先看一段代码

<s:select key="personBean.sport" list="sports" />

生成

<tr>
<td class="tdLabel">
<label for="save_personBean_sport" class="label">最喜欢的运动:</label>
</td>
<td>
<select name="personBean.sport" id="save_personBean_sport">
<option value="football">football</option>
<option value="baseball">baseball</option>
<option value="basketball" selected="selected">basketball</option>
</select>
</td>
</tr>

注意HTML是如何使用表格标签来控制布局和选择HTML的。还有一个类tdLabel,应用于显示表的列。由于没有为Struts 2选择标签指定任何主题,因此使用了默认的xhmtl主题。

指定Struts2应使用的主题

Struts 2标记有一个主题属性,您可以使用它来指定在为该标签创建HTML时应该使用哪个Struts 2主题。主题属性的值很简单,xhtml, css_xhtml, and ajax。可以参见  Themes and Templates Documentation 了解更多信息。本章将了解 xhtml, css_xhtml, 和 the simple themes ,ajax主题应在进行ajax操作时使用(可以参见  Ajax Theme in the documentation)。

您可以在每个Struts 2标签上指定主题,或者您可以使用下列方法之一指定主题Struts 2应该使用什么:

  1. 在标签上使用 theme属性

  2. The theme attribute on a tag’s surrounding form tag

  3. 在page域内有名为“theme”的属性(The page-scoped attribute named “theme”)

  4. 在request域中有名为“theme”属性(The request-scoped attribute named “theme”)

  5. 在session域中有名为“theme”属性(The session-scoped attribute named “theme”)

  6. 在application域中有名为“theme”属性(The application-scoped attribute named “theme”)

  7. 在 struts.properties中的struts.ui.theme属性(默认为xhtml)

有关如何使用上述方法设置主题的主题,请参考 Selecting Themes

将表单标签的主题属性更改为xhtml。当您查看edit.jsp的源代码时,请注意在浏览器显示了jsp之后,有一个名为tdLabel的类被应用到包含标签的表列中(<td class="tdLabel">)。这个CSS类控制表列中标签的位置。tdLabel样式是在/theme/struts/xhtml/styles.css中定义的。

将表单的主题属性更改为 simple ,并重新部署应用程序。检查源代码 edit.jsp在浏览器中呈现之后。您应该看到没有Form标签控制布局,而且也没有用于文本字段的Label 标签。

当你将  <s:head /> 标签添加进jsp页面时,这个css样式将会被引进。将表单的主题属性更改为 cssxhtml,并重新部署应用程序。检查源代码 edit.jsp 在浏览器中呈现之后。表单标签的布局现在由div标签控制,Label 标签又回来了。

可以通过访问 http://localhost: 8080/themes/struts/xhtml/styles.css  可以看到以下内容(题主木有测试成功):

styles.css

.label {font-style:italic; }
.errorLabel {font-style:italic; color:red; }
.errorMessage {font-weight:bold; color:red; }
.checkboxLabel {}
.checkboxErrorLabel {color:red; }
.required {color:red;}
.tdLabel {text-align:right; vertical-align:top; }

当然你也可以覆盖默认的一些样式

<style type="text/css">
.label {color:blue; font-style:normal; font-weight:bold}
</style>

创建自己的主题

在 Struts 2 core jar 文件中我们可以看见 名为 template.css_xhtml, template.simple, and template.xhtml 三个文件夹,这三个文件夹包含了struts2的三个默认主题,每一个文件夹都是一个struts2的标签。例如你打开  template.xhtml 文件夹,将会看到select.ftl 文件,注意后缀为  .ftl

Struts 2框架使用FreeMarker模板引擎为Struts 2标签生成HTML。这就是为什么文件扩展名是 “ftl” 。您可以通过访问http://freemarker.sourceforge.net/.来了解更多关于FreeMarker的信息。

后面是自定义主题模版,估计不怎么用,若题主有幸在项目中用到的话,再来补上吧。

总结

我们可以很容易的重写struts2的默认主题样式,以便控制struts2标签的外观。每一个struts2标签都与一个模板文件相关联(如  select.ftl ),它位于一个以主题命名的文件夹中。默认情况下,struts2框架将会在struts core jar文件中寻找主题文件和模板。更多信息可以参见 Themes and Templates Documentation .

struts2官方 中文教程 系列十四:主题Theme的更多相关文章

  1. struts2官方 中文教程 系列十二:控制标签

    介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...

  2. struts2官方 中文教程 系列十:Form标签

    介绍 在本教程中,我们将探索其他Struts 2表单控件.在前面的教程中,我们介绍了如何使用Struts 2表单(处理表单.表单验证和消息资源文件),我们介绍了如何使用Struts 2 head, f ...

  3. struts2官方 中文教程 系列十三:利用通配符选择方法

    介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...

  4. struts2官方 中文教程 系列十一:使用XML进行表单验证

    在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让 ...

  5. struts2官方 中文教程 系列九:Debugging Struts

    介绍 在Struts 2 web应用程序的开发过程中,您可能希望查看由Struts 2框架管理的信息.本教程将介绍两种工具,您可以使用它们来查看.一个工具是Struts 2的配置插件,另一个是调试拦截 ...

  6. struts2官方 中文教程 系列八:异常处理

    在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴 ...

  7. struts2官方 中文教程 系列七:消息资源文件

    介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...

  8. struts2官方 中文教程 系列五:处理表单

    先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单  即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...

  9. struts2官方 中文教程 系列三:使用struts2 标签 tag

    避免被爬,先贴上本帖地址:struts2 官方系列教程一:使用struts2 标签 tag http://www.cnblogs.com/linghaoxinpian/p/6901316.html 本 ...

随机推荐

  1. selenium使用js进行点击

    WebElement button = driver.findElement(By.xpath("/html/body/div[1]/div[3]/h2/div[2]")); Ja ...

  2. linux自动备份文件 并上传到远程服务器 脚本实现

    (1)在服务器上创建备份目录,并赋予权限       mkdir -p /backup/bakdata  #新建数据备份目录(2)完成备份脚本操作新建脚本文件      vi bakdata.sh添加 ...

  3. 【[JSOI2007]文本生成器】

    \(AC\)机上的计数\(dp\)啊 并没有想到反着求出不合法的串的个数,直接正面硬上 设\(dp[i][j][0/1]\)表示匹配出的长度为\(i\),在\(AC\)机上位置为\(j\),没有/有匹 ...

  4. ms17_010利用复现(32位)

    准备阶段: 1,原版windows7:cn_windows_7_enterprise_x86_dvd_x15-70737.iso 2,kali系统,  虚拟机 3,用于32位机的攻击模块:Eterna ...

  5. Hibernate注解开发示例

    -------------------------------------------------------------------customer------------------------- ...

  6. 【洛谷P1073】[NOIP2009]最优贸易

    最优贸易 题目链接 看题解后感觉分层图好像非常NB巧妙 建三层n个点的图,每层图对应的边相连,权值为0 即从一个城市到另一个城市,不进行交易的收益为0 第一层的点连向第二层对应的点的边权为-w[i], ...

  7. [luoguP1443]马的遍历

    首先来看一下题目描述: 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋 ...

  8. C# 动态改变webservice的访问地址

    1.添加一个App.config配置文件. 2.配置服务http://Lenovo-PC:80/EvisaWS/WharfService?wsdl,那么在上面的文件中就会自动生成服务的配置: < ...

  9. GYM 101550 G.Game Rank(模拟)

    The gaming company Sandstorm is developing an online two player game. You have been asked to impleme ...

  10. SQL数据完整性

    1.数据的完整性 1. 什么是数据的完整性 保证用户输入的数据保存到数据库中是正确的 2.添加数据完整性 在创建表的时候给表添加约束 3.完整性分类 实体完整性.域完整性.引用完整性 ​ ​ 2.完整 ...