如何在JavaScript中访问Grails变量?

如何在JavaScript中访问Grails变量?,javascript,grails,Javascript,Grails,我的Grails应用程序的BootStrap.groovy中有一个变量: class BootStrap { def init = { servletContext -> def testGrails = "11" 如果这个测试值是11,我想显示一个JavaScriptalert() 我的JavaScript: <SCRIPT LANGUAGE="JavaScript"> if(testGrail

我的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");
           }        

if(testGrails==11)//在括号中写什么。。。?
{
警惕(“是”);
}        
如何访问Javascript中的Grails类来执行上述操作


谢谢。

首先,您必须使此变量可以从其他地方访问。目前它被限定在
init
范围内。例如,您可以将其放入全局配置(请参见
config.groovy
)。或设置为服务。或者在某个地方创建一个
公共静态
变量

服务的示例:

class VariableHOlderService {

    def testGrails

}

第二,您需要将其放入请求中。有两种方法-使用过滤器或控制器/操作。当您想要使用来自不同GSP的相同变量时,第一个选项很有用

从控制器来看,它将是:

VariableHolderService variableHolderService

def myAction = {
    render model: [testGrails:variableHolderService.testGrails]
}
并在GSP中使用它作为

<g:javascript>
       if(${testGrails}==11)   
       {
           alert("yes");
       }    
</g:javascript>

if(${testGrails}==11)
{
警惕(“是”);
}    

您应该在Config.groovy中定义变量,而不是在Bootstrap中。然后您可以在gsp文件中访问它,如下所示:

       <SCRIPT LANGUAGE="JavaScript">
       if(${grailsApplication.config.testGrails}==11)
       {
           alert("yes");
       }        
<g:meta name="app.name"/>

if(${grailsApplication.config.testGrails}==11)
{
警惕(“是”);
}        

您确定在
引导程序.groovy中需要它吗?这是你计算出来的还是可以改变的

如果您的答案是否定的,我发现
meta
标记对于获取GSP文件中的信息非常有用

例如,如果您想要您的应用程序名,可以这样获得:

       <SCRIPT LANGUAGE="JavaScript">
       if(${grailsApplication.config.testGrails}==11)
       {
           alert("yes");
       }        
<g:meta name="app.name"/>

Grails关于这方面的文档有点糟糕,但确实如此。

hi,谢谢我做了与您提到的相同的事情,除了gsp alert中的四个之外,其余都是:未定义。。。你有什么想法吗。。。我更喜欢在GSP(Sitemesh布局)中包含JS变量:var someJSvar=${anyAvailableExpression};如何在外部javascript文件中使用${grailsApplication.config.testGrails}?我设想您可以有一个GSP文件,其中包含您需要的所有变量,然后将其与jQuery一起包含在需要访问变量的所有其他文件中。