Grails sitemesh 是不是有任何解决方法不支持带有开放 HTML 正文标记的 if 语句

Posted

技术标签:

【中文标题】Grails sitemesh 是不是有任何解决方法不支持带有开放 HTML 正文标记的 if 语句【英文标题】:Are there any workarounds for Grails sitemesh not supporting if statements with open HTML body tagsGrails sitemesh 是否有任何解决方法不支持带有开放 HTML 正文标记的 if 语句 【发布时间】:2016-06-18 10:41:59 【问题描述】:

我有一个带有以下代码的 GSP..

 <g:if test="$'Ethan Hunt'.equals(agentName)">
 <body>
       Secret Mission
 </g:if>
        Unclassified stuff
  </body>

现在这给出了一个例外..

org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException:         
Grails tag [sitemesh:captureBody] was not closed

根据this,在使用sitemesh 进行布局的Grails 中不支持这种用法,唯一的解决方法是将sitemesh.preprocess 配置设置为false。

但是那个帖子已经相当老了,所以我想知道现在是否有更好的解决方法?

当然,一个明显的方法是重构代码以将 if 检查移到正文中,但假设这不是一个选项(此示例是我的实际代码的简化,其中此重构选项不起作用)。

是否有任何其他选项可以避免此异常但仍保留此代码?

【问题讨论】:

来个不简化的例子怎么样? 【参考方案1】:

除了重构代码或关闭预处理(这对性能影响很大)之外,没有更好的解决方法。

从那时起,Sitemesh 和 Grails 对 Sitemesh 的使用并没有太大变化。

【讨论】:

谢谢 Josh,我想唯一的选择是重构实际代码的痛苦任务。

以上是关于Grails sitemesh 是不是有任何解决方法不支持带有开放 HTML 正文标记的 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

在 Grails 3 中使用 Sitemesh

html子元素中的grails/sitemesh布局设置属性(ng-app)

Sitemesh或瓷砖[关闭]

从 Grails 中的布局视图访问模型

是否有任何理由在 grails 中使用通过 TagLibs 公开给定库的 JavaScript 库插件,而不是直接使用它?

Grails:如何引用位于已安装插件中的资源?