内置Grails标记不起作用

时间:2014-06-10 22:21:09

标签: grails taglib

在grails应用程序从1.3.8升级到2.3.9期间,我遇到了grails内置标记被忽略的问题。

例如,假设GSP页面有两个标记:

<g:if test="${true}">OK</g:if>
<g:hiddenField name="test" />

然后执行的结果将是:

OK
<g:hiddenField name="test" />

但预期结果是:

OK
<input type="hidden" name="test" />

基本上来自grails-web-2.3.9.jar的标签工作正常但是从grails-plugin-gsp-2.3.9.jar完全被忽略。

任何线索为什么会发生这种情况表示赞赏。谢谢。

更新 我发现在执行TagLibraryLookup.afterPropertiesSet()方法时,grailsApplication对象为null,因此标签lib未注册。现在还不清楚为什么它是空的......

Solotion: 问题是在域对象的静态约束= {}内,它是一个
的调用 ApplicationHolder?.getApplication()。getMainContext()?. getBean(serviceName)方法。它通过更改初始化序列/流来阻止应用程序初始化所有必需的spring / grails bean。

1 个答案:

答案 0 :(得分:1)

你在这里错过了一些双引号:

<g:if test=${true}>OK</g:if>
<g:hiddenField name="test" />

如果你添加它们:

<g:if test="${true}">OK</g:if>
<g:hiddenField name="test" />

这有帮助吗?另外,请检查升级后Config.groovy中对默认编码所做的任何更改。