struts2中模板路径的构建策略

struts2的视图扩展是对xwork框架扩展的最复杂部分,而其中的模板抽象部分占据了大部分内容,今天我想在这里探讨一下模板最终路径的确定问题.在没有讨论这个问题之前先将struts2的视图结构稍作分析.

struts2的视图基础结构实际还是xwork中进行规范的,这个规范就是Result,在struts2中在视图进行扩充时实际就是给出多种形式的Result实现.例如dispatcher,freemarker,redirect,stream,plainText,json等等,并且这种扩充是无限的,作为一个Result实现它们在结构上是具有非常重要的地位,但并不代表这种实现就很复杂,它们的复杂度与它们的实现紧密相关.有得实现很简单,而有得并不是很简单.但在这些Result实现中有一类比较特别的实现主要以dispatcher,freemarker,velocity为代表它们有一个特点就是可以在所谓的"页面"上使用UI组件对象,关于UI组件的问题可以参考我写的另篇文章http://blog.csdn.net/zhongxiucheng/article/details/6774432,关于UI组件是struts2中比较复杂的部分,

这里有一个很重要的问题是不要将Result的dispatcher,freemarker,velocity实现与组件的dispatcher,freemarker,velocity实现混淆,jsp,freemarker,velocity它们只是三种相似的技术,只是它们可以同时用于实现Result与UI component两种抽象结构,这里两种结构虽然不相同,但是它们的联系是非常紧密的,UI组件是建立在Result实现基础之上的,但不要误认为在Result的dispatcher实现就只能使用jsp技术的UI组件,而Result的freemarker实现就只能使用freemarker技术的UI组件.理论上讲Result的在dispatcher,freemarker,velocity三种技术中的任何一种实现,都可以使用三种技术中任何一种UI组件实现.

谈到UI组件,就涉及模板,以及模板路径的问题.这里的模板路径与Result配置中的转发路径是不同的,转发路径就是普通的相对或绝对路径,而模板的路径主要由三个参量来决定:templateDir(模板目录),theme(主题),template(模板名称)而这三个参量又分别有默认参量:defaultTemplateDir,defaultUITheme,defaultTemplate其中defaultTemplateDir默认值是template;而defaultUITheme的默认值为xhtml;defaultTemplate分别是不同的UI组件中定义的比如TextField组件的defaultTemplate值为text.对于,其中从这六个参量就可以看出模板路径的配置相对宽松,可以进行灵活的配置,下面是关于模板参量相关的优先级的说明:

设置模板路径

一般在struts2中的struts.properties 文件中的struts.ui.templateDir属性配置模板路径,默认为template。

模板加载顺序

首先搜索web路径下面的的/template/主题名称/template.ftl

然后再找classpath下面的/template/主题名称/template.ftl

然后再使用struts2包中的主题

设置主题名称

struts.properties 文件

struts.ui.theme设置主题名称 默认为xhtml.

也可以通过struts.xml文件配置以上两个属性。通过constant属性。

上面两个参数配置的实际就是defaultTemplateDir与defaultUITheme的值,这两个参数最好不覆盖,如果要覆盖最好使用templateDir(模板目录),theme(主题),这两个参数

 

设置模板引擎

通过struts.ui.templateSuffix属性设置。

模板引擎一般为;

ftl:基于FreeMarker的模板引擎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值