【问题标题】:Postprocess *.js files with grails使用 grails 后处理 *.js 文件
【发布时间】:2012-08-05 15:02:17
【问题描述】:

我想知道是否有可能对 *.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 页面中,但这似乎不是一个优雅的解决方案。

任何帮助将不胜感激。

【问题讨论】:

    标签: grails gsp


    【解决方案1】:

    这两种方法都适合你

    【讨论】:

    • 谢谢。 GSP 资源插件正是我想要的。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      在您的 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(){});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多