Grails sitemesh 是否有任何解决方法不支持带有开放 HTML 主体标签的 if 语句

Are there any workarounds for Grails sitemesh not supporting if statements with open HTML body tags

我有一个 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。

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

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

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

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

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