Grails GSP访问脚本中的变量

时间:2015-10-25 03:44:11

标签: javascript ajax grails gsp

我已经搜索过这个但似乎找不到合适的解决方案。我会笨拙地看一下,看看我哪里出错了。

我正在使用Grails进行项目,我真的非常喜欢它。在我认为难以解决的地方是GSP的。

有人可以告诉我:

控制器:

def index()
{
   def message = "This is a test"
   [message: message]
}

在视图中

<!DOCTYPE html>
<html lang="en">
<head>
    <script type="text/javascript">
        $(document).ready(function() {

             HOW DO YOU ACCESS THAT VARIABLE IN HERE 

        });

<body></body>
</html>

我正在尝试提供一些第三方javascript库,我有一个问题试图解决这个问题。是的,我可以手动ajax它或使用第三方库调用ajax thingy。但是,我认为这有一个grails方式,所以我不必做那么多繁重的工作。我的意思是你在那里访问它上面的脚本{}并使所有东西全球化吗?只是想弄清楚这样做的正确方法是什么。

我正在使用的示例库是JQwidgets库,它具有ajax调用,但我宁愿将数组直接传入Grails中的命名操作。

2 个答案:

答案 0 :(得分:0)

您可以这样写:

<!DOCTYPE html>
<html lang="en">
<head>
    <script type="text/javascript">
        $(document).ready(function() {
            var message = "${message}";
            console.log("I'm from GSP", message);
            $("input[selector]").val(message);    // Just a dumb example
        });
    </script>
</head>
<body>
</body>
</html>

答案 1 :(得分:-1)

好的,因为这导致我走上了答案的道路。

密钥是将编解码器stmt放在gsp的顶部。

我不禁想到我一起攻击这个。每当我通过“谷歌”编码时,我发现我不遵循“专业人士”所做的事情。 目前,这似乎解决了这个问题。

控制器

def index() { 

    def configtree = ConfigTree.list()
    [message: configtree as JSON]
}


<%@page expressionCodec="none" %>
<!DOCTYPE html>

...

<script type="text/javascript">
    $(document).ready(function() {
    var data = ${raw(message)};

    // prepare the data
    var source =
    {
        datatype: "json",
        datafields: [
            { name: 'id' },
            { name: 'parentid' },
            { name: 'text' },
            { name: 'icon' },
            { name: 'expanded' },
            { name: 'selected' },
            { name: 'iconsize' },
            { name: 'disabled' },
            { name: 'value' }
        ],
        id: 'id',
        localdata: data
    };

    var dataAdapter = new $.jqx.dataAdapter(source);

    dataAdapter.dataBind();

    var records = dataAdapter.getRecordsHierarchy('id', 'parentid', 'items', [{ name: 'text', map: 'label'}]);