使用Tapestry 5,我正在寻找一种(如果可能的话)自定义@IncludeStylesheet
注释的优雅方式,以便自动将版本号添加到样式表文件名中。
例如
@IncludeStylesheet("context:/css/decoration.css")
会自动生成带有v
版本号
<link href="/css/decoration.css?v=12345" rel="stylesheet" type="text/css">
添加新注释,例如@IncludeStylesheetVersion
,这是我最初的想法
看看Tapestry代码,看起来我已经领先于一些代码复制/重构,新的RenderSupport
和DocumentLinker
(以及其他)实现。
是否有更简单的方法可以继续?
答案 0 :(得分:4)
您可能根本不需要这样做:资产版本控制内置于Tapestry中。默认行为,根据docs:
Tapestry为资产创建新的URL (无论是上下文还是类路径)。该 网址格式为
/assets/application version number/folder/path
。
- 应用程序版本号:由符号
tapestry.application-version
定义,默认值为随机十六进制数。
如果您只需要确保客户端在更新后会看到更改的样式表,并且您不会一直重新启动应用程序,则默认行为(随机十六进制数字)应该可以正常运行。
根据评论进行修改:这也是available in 5.1:
- app / app-version(适用于在或以下获得的资产) 申请包)
- classpath / app-version(用于从任何其他方式获得的资产) 未映射的包)
其中version是Tapestry框架版本,app-version是应用程序版本(如果没有明确配置,它将是随机字符串)。
只需检查Tapestry为您的CSS文件生成的网址,它们应如下所示:http://myserver.com/assets/ctx/942f15f778dca26c/css/styles.css
答案 1 :(得分:1)
总的来说,您为升级到5.3而付出的努力可能比尝试创建注释以模仿当前版本的内置功能更好。我认为您会发现升级过程非常轻松 - 特别是如果您已经进行了良好的集成测试。