【问题标题】:Add a key value to map in gsp在 gsp 中添加一个键值来映射
【发布时间】:2017-09-14 12:38:35
【问题描述】:

这是我的地图“${session.sessionDataMap}”。我想将函数生成的客户端令牌添加到此映射中。

function clientTokenGeneration() {

  var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "/v1.0/braintree/clienttoken", false);
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.setRequestHeader('Authorization',"${session.sessionDataMap.Access_Token}");
    xhttp.send();
    var response = JSON.parse(xhttp.responseText);
sessionDataMap.put("clienttoken",response.token); //how can i achieve this i n gsp
}

gsp中如何在map中添加键值

【问题讨论】:

  • 只是为了确定。 clienttoken 是在您的 gsp 文件中生成的,更具体的是由 javascript 函数生成的?你想在服务器上更新你的 session.sessionDataMap 吗?
  • 是的,我的函数 clientTokenGeneration () 在 gsp 中。 SessionDataMap 来自服务器,我想在 gsp 中更新。我如何在 gsp 中更新此地图。请帮忙
  • 在客户端创建令牌有什么好处……你怎么可能相信它?在服务端生成token,存储在session中,然后在页面中渲染,这样所有来自客户端的ajax调用都必须在header中设置。
  • clientToken 是上述调用的响应。它不是标头(标头使用不同的 IDS 令牌)。我想在会话 sessionDataMap 中设置生成的响应(response.token)。

标签: grails gsp


【解决方案1】:

实现所需的一种方法是在控制器中执行如下所示的操作:

YourController {

    //...

    def ajax_setClientToken() {
        session.clienttoken = params.token
    }

    //...
}

在您的 .gsp 文件中,在您给定的 JavaScript 函数 clientTokenGeneration 中,您可以调用此操作:

function clientTokenGeneration() {

  var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "/v1.0/braintree/clienttoken", false);
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.setRequestHeader('Authorization',"${session.sessionDataMap.Access_Token}");
    xhttp.send();
    var response = JSON.parse(xhttp.responseText);

    xhttp.open("POST", "/ajax_setClientToken?token="response.token, true);
    xhttp.send();
}

不过,您也可以在服务器端生成客户端令牌。在这种情况下,最好将 session.clienttoken = <new token> 添加到创建令牌的方法中。

【讨论】:

  • 我在 UI 端创建 clientToken。我想让这个令牌在会话中可用。
  • @Jayashree 太棒了!上面的代码就可以完美运行了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 2020-05-13
  • 2021-10-10
相关资源
最近更新 更多