【问题标题】:Grails upgrade from 1.3.7 to 2.2.3 producing odd exceptionsGrails 从 1.3.7 升级到 2.2.3 产生奇怪的异常
【发布时间】:2013-11-01 23:39:51
【问题描述】:

在我的“Spring Source Tools Suite”中,我导入了一个使用命令行 Grails v1.3.7 构建的项目。 IDE 使用 v2.2.3。我有一个很好的应用程序部分工作,但有两件事不起作用,我在两天的大部分时间里都在努力让它工作。不起作用的两个部分是上传 jpeg 文件和单击按钮捕获文本。我只在这个问题中寻求关于后一个问题的帮助。这是错误消息: Message: It looks like you are missing some calls to the r:layoutResources tag. After rendering your page the following have not been rendered: [defer]

这些调用是针对我的项目之外的类和依赖类内部的。我不知道是什么在召唤他们,也不知道我将如何解决这个问题。

提前感谢您的帮助,

~比尔

PS:我知道在其他人已经回答的问题上添加问题被认为是不好的形式。因此,我将添加一个指向我在此处阅读的另一个主题的链接:Grails Resources Plugin and AJAX loaded javascript。但是我的 gsp 模板中没有 g:layoutBody。我会在每个 g: ... 之后添加 r:layoutResources disposition="defer"/ 还是在 g.form 标签之后添加。感谢您提供任何帮助。

【问题讨论】:

  • 基本上,我要问的是:“我应该在代码中对r:layoutResources 进行调用,什么决定我是否需要添加disposition="defer"/

标签: grails


【解决方案1】:

看一下标签r:layoutResources的文档:http://grails-plugins.github.io/grails-resources/ref/Tags/layoutResources.html

这个标签有特殊的行为,在第一次调用它时,它会呈现带有“头”的资源(旨在包含在页面的部分中),第二次调用它时,它会呈现“配置”推迟”资源。

因此无需将disposition="defer" 放入标签中,因为它会自动将第二个标签呈现为处置“延迟”。

此外,该文档还显示了在何处进行这些调用的最佳实践。

为了获得最佳使用效果,应在 Sitemesh 布局的头部和正文末尾调用它。

<html>
   <head>
      <g:layoutTitle/>
      <r:layoutResources/>
   </head>
   <body>
      <g:layoutBody/>
      <r:layoutResources/>
   </body>
</html>

因此,最好有一个主布局,将这些标记调用放置在头部和主体的末尾。在您的视图中使用此布局可确保在所有其他资源标签调用之后正确调用 r:layoutResources

【讨论】:

  • 谢谢你。我在我已经拥有的 main.gsp 中执行了此操作,并且它有效。我无法理解的一件事是布局和视图之间的区别是什么,因为它们都是 .gsp 文件。但也许更重要的是,当我没有使用 v1.3.7 时,为什么我现在需要使用 Grails 2.2.3 的 r.layoutResources 代码?
  • 在较新版本的 Grails 中,默认包含资源插件的依赖项。您的 BuildConfig.groovy 中应该有类似 runtime ":resources:1.2" 的内容。如果您不想使用它,只需删除此行即可。
  • 不,BuildConfig.groovy 文件中没有类似的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 2013-06-27
相关资源
最近更新 更多