带有grails的后处理* .js文件

时间:2012-08-08 13:27:41

标签: grails gsp

我想知道有可能对* .js文件进行后期处理,以便可以评估每个gsp表达式。

例如,我可以直接在gsp页面中编写以下代码:

<script type="text/javascript">
$.post("${createLink(controller:'mycontroller',action:'myaction')} " , {"id":id},function(){});
</script>

表达式$ {createLink}由grails评估。

但是我想在* .js文件中使用$ {createLink()},这些文件不是由grails处理的。 也许可以使用资源插件对每个* .js文件进行后处理并评估gsp表达式?

当然,我可以将所有js代码包装在一个单独的gsp页面中,但它似乎不是一个优雅的解决方案。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

其中任何一个都适合你

答案 1 :(得分:0)

另一种选择是做类似的事情,将url存储在变量

<script type="text/javascript">
  var url = "${createLink(controller:'mycontroller',action:'myaction')}";
</script>

然后你可以使用你想要的所有ajax调用,但仍然只设置一次url。

答案 2 :(得分:0)

在GSP文件中使用JS Hash来保存重要的内容

<r:script>
 var linkobject={
   mylink:'${createLink(controller:"mycontroller",action:"myaction")}',
     linkA : '${params.id}',
    linkB: '${g.createLink(action: "getThreats")}',
    linkC: '${g.createLink(action: "addThreat")}',
    linkD: '${g.resource(dir: 'images/icons', file: 'folder.png')}'
 
}

</r:script>

然后,在JavaScript文件中使用JS哈希来获得所需内容:

$.post(linkobject.mylink , {"id":linkobject.linkA},function(){});