簡體   English   中英

如何在JavaScript中訪問Grails變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM