Unmi的Struts2学习笔记(十一)

你尽可以做个良民,为群体效率而本份的遵循个人秩序,然而事与愿违,非但 不能因此提升群体的效率,而你势必失去诸多的机会,不会有人褒奖你,更得不 到同情,只得自觉的天真。

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标签下拉框
,以便于您获取更多的相关知识。

时间: 2024-10-03 08:52:59

Unmi的Struts2学习笔记(十一)的相关文章

Unmi的Struts2学习笔记

Unmi的Struts2学习笔记(十四) Unmi的Struts2学习笔记(十三) Unmi的Struts2学习笔记(十二) Unmi的Struts2学习笔记(十一) Unmi的Struts2学习笔记(十) Unmi的Struts2学习笔记(九) Unmi的Struts2学习笔记(八) Unmi的Struts2学习笔记(七) Unmi的Struts2学习笔记(六) Unmi的Struts2学习笔记(五) Unmi的Struts2学习笔记(四) Unmi的Struts2学习笔记(三) Unmi的S

Unmi的Struts2学习笔记(二)

记笔记,尤其是在 Blog 里记,实则是浪费时间.让学习.阅读的速度以数量 级的下降,收获时当时掌握的更细,却并不代表着真记得牢.一小段时间不用它 ,同样可以忘得很干净,也就是方便于以后能由此泛起些涟漪,如能抛砖引玉就 更幸运了.入正题: 1. 记得 Struts1 的 struts-config.xml 通常是放在 WEB-INF 目录下的, Struts2 的 struts.xml 却要放到 WEB-INF/classes 下的,傻眼了吧,反正我是 .没看仔细之前,总给我报 There is

Unmi的Struts2学习笔记(一)

Struts 从1.1使用到1.3已有多年,都升成2了,却来了个大变脸,须重新审视 一番了.从头学习,记下笔记,以要点式. 1. Struts2 与 Struts1 似乎没什么血缘关系了,承自于 WebWork,直害 WebWork 不再推出新版本了,原先的 WebWork 使用者只需顺其然,即是水道渠成 :相反 Struts1 的开发经验对于 Struts2 却没有太大的帮助. 2. Struts1 的核心控制器是 ActionServlet,而 Struts2 的核心控制器是 FilterD

Unmi的Struts2学习笔记(十四)

生活中常为一些无伤大体之事优柔寡断,譬如买羽毛球拍是方头的还是圆头的 呢?电子产品是这款好还是那款好呢?拿此又放下,举彼又放下,最后靠概率来 决定.取其一,少段时间内总有些戚戚然,而后全然无所谓.小事无碍,大事可 就会后悔不及,无疑亦会让许多机会径直溜去. 1. 从此开始学习 Struts2 对 Ajax 的支持.这也是 Struts2 新注入的元素 .Struts2 的 Ajax 支持是建立在 Dojo 和 DWR 基础之上的.提供了 Ajax 的输 入检验,表单提交:pub-sub 事件模型

Unmi的Struts2学习笔记(十)

有一日,帮外公翻腾出他箱底的照片进行数字化留存,已是耄耋之年的外公端 详起那些记忆来,看到都是一同革命的热情小伙,不时感慨:唉!好多人都不在 啦! 1. <s:action .../> 可以用来在 JSP 页面直接调用 Action,用 name 指定 Action,executeResult(默认为 false) 指定是否包含那个 Action 转向视 图的内容:executeResult 会把视图的所有内容输出在标签位置. ignoreContextParams(默认为 false),是否

Unmi的Struts2学习笔记(五)

常有这样的梦:不知何来一本似乎是无字天书,而其中的字句却是慢慢地.渐 显可辨.同时现实中的自己完全能察觉这是一个梦,极怕即刻醒来,想多记取那 些天外之语.但总不能如愿,醒来时还留有某些字句痕迹,再过后就全然忘却. 仿佛进入的是一个太虚幻境. 1. 动态 Action:<action ../> 元素的一个前所未有的特性是,name 属性可以用通配符,class 和 method 属性中可以用 name 中的匹配参数,{0}/ {1} 的形式.举两个例子说明: ① <action name=

Unmi的Struts2学习笔记(三)

连续几日熬夜,以致左胸又起闷痛感,何来如此辛苦?不由自忖,人生至今, 印象中从来就没有过安逸与幸福感.常要回避刺疼. 1. WebWork 的核心控制器是 ServletDispatcher,映射到 *.action 的 <url-pattern> 即可.在 WebWork 与 Struts2 的 struts.xml 和 struts.properties 相对应的分别是 xwork.xml 和 webwork.properties,文件 内容几乎一样,只几个关键字的差异. 2. Strut

Unmi的Struts2学习笔记(十三)

柏杨在形容中国人不团结,喜欢窝里斗用了这样的话:每一个中国人都是一条 龙,但是三个中国人加在一起──三条龙加在一起,就成了一条猪.一条虫,甚至 连虫都不如--<丑陋的中国人>.可是他老人家走得走,要是能多有半个月的阳 寿,不知作有何感想. 1. <s:optiontransferselect.../> 正是考虑到通常使用而新加的用于 创建两个下拉框,可以来回移动列表项.有属性设置是否显示 "选定左移"."全 部左移"."选定右移&q

Unmi的Struts2学习笔记(十二)

上有所好,下必甚之.君不见屠宰场的墙头"以三个代表指导我们的屠宰工作 !" 发挥到极致:近来更是"和谐"泛滥,褒贬难分,诸如"创建人水和谐" 等 比比皆是.程序开发更需要务实,任凭天花乱坠都糊弄不了梗直的机器. 1. 初见 Struts2 的表单标签有 tooltip 以及 tooltipConfig 下的 tooltipBgColor 等属性,有一种砰然心动的感,本能的以为例如一个输入框,鼠 标悬停其中便出现一个 JS Tip 层,还可控制这个