如何在JavaScript中访问Grails变量?

jun*_*idp 4 javascript grails

我的Grails应用程序中有一个变量BootStrap.groovy:

      class BootStrap {
      def init = { servletContext ->
      def testGrails = "11"
Run Code Online (Sandbox Code Playgroud)

alert()如果此测试值为11,我想显示JavaScript .

我的JavaScript:

           <SCRIPT LANGUAGE="JavaScript">
           if(testGrails==11)   // WHAT TO WRITE WITH IN THE BRACKETS ...?
           {
               alert("yes");
           }        
Run Code Online (Sandbox Code Playgroud)

如何在Javascript中访问Grails类来执行上述操作?

谢谢.

Igo*_*nov 10

首先 - 你必须从其他地方访问这个变量.目前它的init范围有限.例如,您可以将其置于全局配置中(请参阅参考资料Config.groovy).或设置为服务.或者在public static某个地方做一个变量.

服务示例:

class VariableHOlderService {

    def testGrails

}
Run Code Online (Sandbox Code Playgroud)

class BootStrap {

      VariableHolderService variableHolderService

      def init = { servletContext ->
          VariableHolderService.testGrails = "11"
}
Run Code Online (Sandbox Code Playgroud)

第二 - 你需要把它提出来.有两种方法 - 使用过滤器或控制器/动作.当您想要使用来自不同GSP的相同变量时,第一个选项很有用.

从控制器它将是:

VariableHolderService variableHolderService

def myAction = {
    render model: [testGrails:variableHolderService.testGrails]
}
Run Code Online (Sandbox Code Playgroud)

并在GSP上使用它

<g:javascript>
       if(${testGrails}==11)   
       {
           alert("yes");
       }    
</g:javascript>
Run Code Online (Sandbox Code Playgroud)