Tapestry在静态页面和动态内容分工方面的研究

本文探讨了Tapestry框架在HTML模板设计上的优势,并提出了一种改进方案,通过减少美工人员的工作负担来提高开发效率。

Tapestry在静态页面和动态内容分工方面的研究

Tapestry的一个最耀眼的功能是其绝好的模板设计思想,它能够将动态内容以极少的侵入性而展现到HTML页面上,我对其这一功能非常赞赏,如果 Tapestry能够像Spring那样把这一部分HTML模板解析功能独立出来,打成一个Tapestry-Core.jar极不妙哉?!

在工作实践当中,我发现Tapestry提供的Shell组件其实用处不大,美工人员作出的页面大多已包括HTML TITLE HEAD LINK 等标签,如果将这些删除而封装到Shell岂不多此一举?而且Shell引用CSS IMAGE的方式(Asset)比较麻烦。

所以,我建议开发组不使用Shell而直接采用原来静态页面的配置,但是Tapestry对URL进行了处理而且使用Servlet之后相对路径往往会出问题,为此提供了一个简单Base组件,在HEAD中增加一个base标签即可。
如页面头部如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>测试页面</title>
<span jwcid="base"/>
<link href="../css/menu.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../js/menu.js"></script>
</head>
。。。。。。

Base.java:
    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
        BaseTagWriter baseTagWriter = new BaseTagWriter();
        baseTagWriter.render(writer, cycle);
    }

这样美工的增加的工作就非常非常少了,而且美工与开发人员的配合也变得很愉快了。

个人认为理想的分工效果是这样的:
整个Web应用可以以两种方式浏览,一种是浏览静态的HTML页面,另一种是浏览动态的web内容。如果想以第二种方式浏览则web.xml中增加
        <servlet-mapping>
            <servlet-name>app</servlet-name>
            <url-pattern>*.html</url-pattern>
        </servlet-mapping>
这样访问HTML页面时Tapestry会将动态内容发送给浏览器,如果想浏览静态的HTML页面,则删除这个映射即可。
这样一来,美工人员和开发人员共享同一套HTML模板文件,相互之间的干扰比较少。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值