介绍

当您使用一个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. win8中 用office 提示值不在预期的范围内

    原文:http://bbs.kafan.cn/thread-1401951-1-1.htmlhttp://bbs.kafan.cn/thread-1401951-1-1.html 错误如下: 名称:  ...

  2. c++基础知识_c++11 类默认函数的控制:"=default" 和 "=delete"函数

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <vecto ...

  3. note03-计算机网络

    3. 网络层 网络层的主要协议有IP.ICMP.IGMP.ARP等: IP地址分类:ABCDE ,根据32比特位的IP中网络号所占位数进行决定IP的类型 A:0 0000000 网络号| 000000 ...

  4. POJ3737 UmBasketella

    嘟嘟嘟 一道三分入门题. 参考二分,三分就是每一次把区间分成三段,然后舍弃一段,不断缩小范围直到一个点. 一般用于求单峰函数的最值问题. 这道题发现V和r成一次函数的关系,因此三分r. 下面给出三分板 ...

  5. 2018.11.18 Sturts2配置详解&常量配置进阶

    1.基于struts.xml 的节点参数配置 package节点 action节点 result节点 include节点 2.struts常量配置以及如何修改为自己的想要的配置 2.1struts默认 ...

  6. 论文笔记:Progressive Differentiable Architecture Search:Bridging the Depth Gap between Search and Evaluation

    Progressive Differentiable Architecture Search:Bridging the Depth Gap between Search and Evaluation ...

  7. git报错error: src refspec refs/heads/master does not match any.

    $ git pusherror: src refspec refs/heads/master does not match any.error: failed to push some refs 出错 ...

  8. SQL批量添加,更新,删除

    SQL语句: 存储过程: 代码: 这里说的是关于SQL的批量操作数据. 需要准备: 三层框架:利用 动软代码生成器(可以快速生成增删改查) 生成三层 Model,BLL,Dal ①DbHelpeSQL ...

  9. JavaScript监控输入框字数变化,超出限制则禁止输入

    JavaScript监控输入框字数变化,超出则禁止输入 不废话,给你看看效果: 1.无输入状态: 2.输入三个字符: 3.超出5个后报错: 现在粘出代码,首先是html代码: <body> ...

  10. vue+nodejs+express+mysql 建立一个在线网盘程序

    vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...