在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。
答案 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
中对默认编码所做的任何更改。