2016-03-04 6 views
0

У меня есть GSP на код ниже ..Существуют ли какие-либо обходные пути для Grails SiteMesh не поддерживает, если заявления с тегами HTML открытым

<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 такое использование не поддерживается в Grails с использованием sitemesh для макетов, и единственным обходным решением является установка конфигурации sitemesh.preprocess в false.

Но эта должность довольно старая, поэтому мне было интересно, есть ли какие-нибудь лучшие обходные пути сейчас?

Конечно, очевидно, что было бы переопределить код для перемещения проверки if внутри тела, но предположим, что это не вариант (этот пример упрощает мой фактический код, где этот вариант рефакторинга не будет работать) ,

Есть ли другие возможности избежать этого исключения, но сохранить этот код?

+0

Как насчет упрощенного примера? –

ответ

1

Нет лучшего обходного пути, кроме рефакторинга кода или отключения предварительной обработки (что сильно влияет на производительность).

Не так много изменилось с использованием Sitemesh и Grails с Sitemesh с тех пор.

+0

Спасибо, Джош, я думаю, единственный вариант - это болезненная задача рефакторинга реального кода. – AbuMariam