2014-06-10 54 views
-1

在Grails應用程序從1.3.8升級到2.3.9期間,我遇到了忽略grails內置標記的問題。內建的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的標籤完全被忽略。

任何線索爲什麼會發生這種情況表示讚賞。謝謝。

UPDATE: 我發現,在執行TagLibraryLookup.afterPropertiesSet()方法grailsApplication對象爲空的,所以標記庫未註冊。現在尚不清楚爲什麼它是空...

Solotion:? 問題是靜態約束範圍內=域對象{}這是
ApplicationHolder .getApplication()的調用getMainContext( )?getBean(serviceName)方法。它通過改變初始化順序/流來阻止應用程序初始化所有需要的spring/grails bean。

回答

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中的默認編碼所做的任何更改。

+0

謝謝你的迴應。但這僅僅是一個例子。 Grails不再能識別來自實際應用程序的許多標籤,關於Config.groovy我們使用的是外部的,所以沒有改變。 – user3727892

+0

您需要顯示一個不起作用的內置標籤的示例。 –

+0

有很多,f.e. g:hiddenField,g:include等 – user3727892