2

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

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

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

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

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

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

任何帮助,将不胜感激。

4

3 回答 3

2

这两种方法都应该适合你

于 2012-08-08T13:46:34.383 回答
0

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

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

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

于 2012-08-08T17:58:28.347 回答
0

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

然后,在你的 JavaScript 文件中使用 JS 哈希来获得你需要的东西:

$.post(linkobject.mylink , {"id":linkobject.linkA},function(){});
于 2013-04-24T16:59:28.850 回答