Grails Resources插件和AJAX加载了javascript

sik*_*rip 17 javascript ajax grails grails-plugin

我在grails 1.3.7应用程序中添加了资源插件,除了异步加载的javascript之外,一切正常.

所以,如果我有一个包含a的模板

<r:script>
    // javascript here
</r:script>
Run Code Online (Sandbox Code Playgroud)

并通过ajax加载js代码不执行,我得到这个错误:

看起来您缺少对r:layoutResources标记的一些调用

这是有道理的,因为页面已经被渲染,并且没有r:layoutResources来处理新添加的r:script js代码.

我发现的唯一的解决方法是添加 render r.layoutResources(disposition:"defer") 后,实际render(template:...)在异步呈现内容的控制器操作.

还有其他更明确的解决方案吗?

Pet*_*ook 18

更好的方法是为您的AJAX响应设置专用布局:

<g:layoutBody/>
<r:layoutResources disposition="defer"/>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Grails 2.0,则可以在render方法(render template: "...", layout: "ajax")中指定布局.否则,按惯例使用布局.