你尽可以做个良民,为群体效率而本份的遵循个人秩序,然而事与愿违,非但 不能因此提升群体的效率,而你势必失去诸多的机会,不会有人褒奖你,更得不 到同情,只得自觉的天真。
1. 模板目录->主题目录->主题(模板文件) 这是模板/主题的目录组织方 式。以实际为例,打开 struts2-core-2.x.x.jar 可以看到里面有一个 template ,在 template 下有5个目录 ajax、css_xhtml、simple、xhtml 和 archive,其 中前四个分别是 ajax、css_xhtml、simple、xhtml 主题的目录,每个主题目录 中有各自的模板文件,主要是 ftl 文件,还有 css和 js 文件。最后一个 archive 是归档的主题目录,其下又有 ajax、simple、xhtml、模板文件是 .vm 文件。由此可知 Struts2 大力推荐的模板语言是 FreeMarker,而不是 Velocity ,以后要好好看看 FreeMarker,只知道 FreeMarkder 更 XML 化。
2. 上面看到模板目录名是 template,是 struts2-core-2.x.x.jar 中,其实 目录名是由 struts.ui.templateDir 常量来指定的,只是默认值是 template。 意味着 Struts 2 从 Web 应用的 template 目录或CLASSPATH 的 template 目录 (包) 中依次加载特定的模板文件。
3. 比如我们使用一个 select 标签,且指定主题为 xhtml,则加载模板文件 的顺序为 (1) Web 应用/template/xhmlt/select.flt (2) CLASSPATH/template/xhtml/select.ftl。Struts2 默认是用的 FreeMarkder 模 板技术,可设置常量 struts.ui.templateSuffix 来改变默认的模板技术,可选 值有 ftl、vm、jsp。但是对于 vm 和 jsp 要自己提供完整的实现,Struts2 可 没帮你做这些。
4. 有时候我们想要自定义主题,如你希望输入框前的标签显示红颜色,你不 想要校验错误提示在输入框正上方而是右边。当然你可以修改 struts2-core- 2.x.x.jar 中 template 下某个主题的模板文件,或拷一份到 Web 应用目录的 template 目录修改要定制的模板,这样做总有些不爽。Struts2 还支持两种更灵 活的主题定制方式。包装和继承现有主题,可以同时使用。
最简单的主题定制方式是利用主题模板的加载优先级,把自定义的模板文件放 在优先级高的目录,比如放一个 text.ftl 在 WEB- INF/classes/template/xhtml/ 目录下,它将覆盖掉 struts2-core-2.x.x.jar 里的 template/xhtml/text.ftl 的定义。
5. 先看一个包装的例子,在 xhtml 下的 combobox.ftl 的内容如下:
<#include "/${parameters.templateDir}/ ${parameters.theme}/controlheader.ftl" /><#include "/ ${parameters.templateDir}/simple/combobox.ftl" /><#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" /><#nt/>
它就是对 simple/combobox.ftl 的基础上包装上一个 controlheader.ftl 和一 个 controlfooter.ftl,包装的局限性是你仍然是要为每一个 UI 组件提供单独 模板文件,即全套的。
和设计模式中的包装(装饰)模式如出一辙,如 BufferedInputStream 包装了 InputStream,但在 BufferedInputStream 提供了全套的和 InputStream 一样 的操作方法。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索目录
, struts2标签
, 文件
, freemarker
, 模板
, 主题
, template
, xhtml
, ajax struts2
, ftl
, Struts2 配置文件优先级
, *.ftl not found
, 主题模板
struts2标签下拉框
,以便于您获取更多的相关知识。