使用grails后处理*.js文件

使用grails后处理*.js文件,grails,gsp,Grails,Gsp,我想知道是否有可能对*.js文件进行后处理,以便对每个gsp表达式进行求值 例如,我可以直接在gsp页面中编写以下代码: <script type="text/javascript"> $.post("${createLink(controller:'mycontroller',action:'myaction')} " , {"id":id},function(){}); </script> $.post(${createLink(控制器:'mycontroller

我想知道是否有可能对*.js文件进行后处理,以便对每个gsp表达式进行求值

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

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

$.post(${createLink(控制器:'mycontroller',操作:'myaction')},{id:id},函数(){});
表达式${createLink}由grails计算

但我也希望在grails未处理的*.js文件中使用${createLink()}。 也许可以使用资源插件对每个*.js文件进行后处理并计算gsp表达式

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


任何帮助都将不胜感激。

这两种方法中的任何一种都适合您

  • (独立)
  • (它与资源插件一起工作)

另一种选择是执行类似于将url存储在变量中的操作

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

var url=“${createLink(控制器:'mycontroller',操作:'myaction')}”;

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

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

<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>

非常感谢。GSP资源插件正是我想要的。
$.post(linkobject.mylink , {"id":linkobject.linkA},function(){});