Sitemesh每页自定义javascript

时间:2013-10-01 08:36:34

标签: java jquery spring sitemesh

我正在使用sitemesh作为基于弹簧的网站。问题是我有一些javascript,我希望它只使用jquery $(function() { ... })在一个特定页面的onload事件上运行,而不是在每个页面上运行。

我已将jquery.js包含在装饰者的底部,身体后面。因此,如果我尝试在我的装饰页面的主体中包含<script>标记,则不会执行该脚本,因为在之后将加载的jquery!我知道我可以在我的装饰器的标题中包含jquery.js,所以它将在装饰页面中的自定义脚本之前,但我不喜欢该解决方案,因为它将在我的页面的头部包含javascritp。

所以我希望在我的sitemesh装饰器中有一个占位符,我的装饰页面中的自定义将被放置(你可以理解我来自django世界:p)。这可能吗 ?你有什么建议吗?或者我应该把我的jquery.js放在标题中并完成它?

1 个答案:

答案 0 :(得分:8)

要回答我的问题,经过一些搜索,我找到了以下解决方案:

我在装饰器页面的末尾添加了以下内容(包括jquery.js之后)

<decorator:getProperty property="page.local_script"></decorator:getProperty>

我还添加了以下内容

<content tag="local_script">
<script>
  $(function() {
    alert("Starting");
  });
</script>
</content>

装饰结果页面包含local_script标签的内容,正好在我想要的位置,一切正常:)

我不知道为什么sitemesh的这个功能没有被正确记录 - 使用它你可以有一个很好的模板行为(如django)。