我在我的项目中使用SiteMesh3,但我不知道如何解决这个问题:对于性能问题,我想将我的特定JavaScripts放在我的页面末尾(http://developer.yahoo.com/performance/rules.html#js_bottom)和通用在装饰者的最后,这些JQuery导入。
问题是,当我将特定的JS注入装饰器时,JQuery还没有导入,页面也不起作用。
我试图将我的内容放入,但SiteMesh无法识别它,只是。
有没有办法解决这个问题而没有将JQuery导入到每个页面中并将其保存在装饰器的末尾?
非常感谢您的关注。
答案 0 :(得分:2)
不知道此解决方案是否适用于SiteMesh 3.我正在使用SiteMesh 2.但是我遇到了同样的问题。我找到的解决方案是用标签“content”包围javascript。然后在装饰器中检索这些值。 例如: 在要装饰的页面中:
<content tag="botton_javascript">
<script>
$(function() {
console.log('This is a test');
});
</script>
</content>
在装饰页面中:
<decorator:getProperty property="page.botton_javascript"></decorator:getProperty>
使用tag属性很重要,你可以订购javascript的导入。在sitemesh 3中,您将使用sitemesh替换装饰器
答案 1 :(得分:2)
我找到了这个解决方案:
将此标记添加到sitemesh3.xml:
<content-processor>
<tag-rule-bundle class="org.sitemesh.content.tagrules.html.DivExtractingTagRuleBundle" />
</content-processor>
然后在HTML中添加具有特定名称的div。例如:
<div id="siteMeshJavaScript">
<script type="text/javascript">
...
</script>
</div>
最后,在装饰者的任何地方添加对此div的引用:
<sitemesh:write property='div.siteMeshJavaScript'/>