[英]How can I access a Grails variable in JavaScript?
我的Grails應用程序的BootStrap.groovy
有一個變量:
class BootStrap {
def init = { servletContext ->
def testGrails = "11"
如果此測試值為11,我想顯示JavaScript alert()
。
我的JavaScript:
<SCRIPT LANGUAGE="JavaScript">
if(testGrails==11) // WHAT TO WRITE WITH IN THE BRACKETS ...?
{
alert("yes");
}
如何在Javascript中訪問Grails類來執行上述操作?
謝謝。
首先 - 你必須從其他地方訪問這個變量。 目前它與init
范圍有關。 例如,您可以將其置於全局配置中(請參閱Config.groovy
)。 或設置為服務。 或者在某處創建一個public static
變量。
服務示例:
class VariableHOlderService {
def testGrails
}
和
class BootStrap {
VariableHolderService variableHolderService
def init = { servletContext ->
VariableHolderService.testGrails = "11"
}
第二 - 你需要把它提出來。 有兩種方法 - 使用過濾器或控制器/動作。 當您想要使用來自不同GSP的相同變量時,第一個選項很有用。
從控制器它將是:
VariableHolderService variableHolderService
def myAction = {
render model: [testGrails:variableHolderService.testGrails]
}
並在GSP上使用它
<g:javascript>
if(${testGrails}==11)
{
alert("yes");
}
</g:javascript>
您應該在Config.groovy中定義您的變量,而不是在Bootstrap中定義。 然后你可以在gsp文件中訪問它,如下所示:
<SCRIPT LANGUAGE="JavaScript">
if(${grailsApplication.config.testGrails}==11)
{
alert("yes");
}
你確定在Bootstrap.groovy
需要它嗎? 這是你計算或可以改變的東西嗎?
如果答案是否定的,我發現meta
標記對於獲取GSP文件中的信息非常有用。
例如,如果您需要應用程序名稱,可以像這樣:
<g:meta name="app.name"/>
您可以在application.properties
文件中獲取任何屬性。
如果你像我一樣需要將它連接到另一個值,這是我的例子。 請記住,任何標記都可以用作沒有g:
名稱空間的方法。 例如:
<g:set var="help" value="http://localhost:8080/${meta(name:"app.name")}/help" />
關於這個的Grails文檔有點差,但它就在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.