使用SiteMesh的简单模板解决方案

在本文中,我将向您展示如何在JEE网站中使用SiteMesh ,以使其具有统一感。

在谈论模板时,每个人最初使用的方法是在整个JSP页面中使用<@include>标记。 由于所有JSP都负责调用include,因此此操作过程从一开始就是有缺陷的,因此,没有真正的强制措施来使用正确的JSP。

最常用的方法是Apache Tiles。 坦率地说,我没有看过Tiles,因为它是从Struts迁移到Apache的。 Struts Tiles应该与Struts结合使用。 Apache Tiles似乎支持更多技术(JSP,Velocity,Freemarker等),但是我似乎没有开箱即用的JSF支持,尽管似乎有很多文章讨论了该主题及其问题。

当我使用Struts Tiles时,我发现它是一个非常强大的框架,但是许多初级开发人员都遇到了一些问题。 在我从事的大多数项目中,一位高级开发人员会组装图块,而初级的则由他们自己创建页面。 我发现Tiles是可配置的,但这是以复杂性为代价的。 在大多数情况下,我并不需要Tiles的所有功能:我只想在首页周围精心制作一个页眉,页脚和菜单。

在研究AppFuse时 ,我偶然发现了一个很好的模板工具,即SiteMesh。 SiteMesh是技术中立的,这意味着它可以与使用的任何视图框架( 包括JSF )一起使用。 它基于servlet过滤器的非常简单的概念。 XML文件构成模板配置的基础。 此配置包含装饰哪些页面以及使用哪些模板。

Sitemesh使用示例

建立了模板机制,因此,无论是独立查看还是通过过滤器查看,每个页面都被视为完整的页面。 例如,当您正常书写页面时,您将提供标题的文本(大多数浏览器的标题栏中显示的内容)。 如果您使用的是SiteMesh,则没有任何变化。 在运行时,尽管页面设计会有所不同,但Servlet过滤器会从源HTML(可以来自动态源)读取标题的文本值,并输出具有相同标题的文本值的修饰页面。

以下示例显示了如何在模板中实现它:

<html>
  <head> ... </head>
  <body>
    <divid="top"> Header </div>
    <h1><decorator:getPropertyproperty="title"/></h1>
    ...
  </body>
<html>

没有什么比这更简单了。 但是,该解决方案使独立视图与装饰视图分离。 前者无需了解后者!

一个常见的用例是将常见CSS和JavaScript声明放入模板中。

此外,使用哪种装饰器的选择可以来自不同的策略:

  • 配置文件,
  • 饼干,
  • 浏览器语言
  • 显示代理(浏览器或打印机),
  • 等等

如果我有简单的模板需求,该解决方案的简单性和鲁棒性将使我深刻考虑使用它。 在相对的站点上,如果您有复杂的模板要求,SiteMesh将远远不够。

您将在这里找到Maven / Eclipse格式的非常简单的项目。

翻译自: https://blog.frankel.ch/simple-templating-solution-with-sitemesh/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值