如何在GET url查询字符串

时间:2015-10-08 08:29:22

标签: javascript json spring-mvc get request

我在javascript中有一个json对象,

filters = Object {assetType: "CAR~LIGHT TRUCK", bodyType: "SEDAN~SPORT UTIL"}

我需要在查询字符串中传递这些值以及另外5个字符串值。

url = '/starHome/exportToCsv/'+tier+'/?period='+period+'&level2='+level2+'&level3='+level3+'&level4='+level4+'&filters='+filters;

window.location.href = url; 当我试图在控制器中获取过滤器参数值时 request.getparamter("filters");我收到“[object object]

如何将此值传递给控制器​​? 我有一个包含所有这些字段的pojo类。我可以使用那个班级吗?。

4 个答案:

答案 0 :(得分:2)

您可以在base64中对json字符串进行编码,然后在url中使用它:

https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa

答案 1 :(得分:1)

您可以使用jQuery.param()

{
  "appenders": [
    {
      "type": "clustered",
      "appenders": [
        {
          "type": "file",
          "filename": "log/app.log",
          "maxLogSize": 10485760,
          "numBackups": 3
        },
        {
          "type": "logLevelFilter",
          "level": "WARN",
          "appender": {
            "type": "file",
            "filename": "log/warnings.log"
          }
        },
        {
          "type": "logLevelFilter",
          "level": "ERROR",
          "appender": {
            "type": "file",
            "filename": "log/errors.log"
          }
        }
      ]
    }
  ]
}

答案 2 :(得分:1)

到目前为止,我发现以下是使用Javasript

的最佳解决方案
var a = {a:'foo',b:[1,2,3],g: {q:"8798"}};

var b = window.btoa(JSON.stringify(a)); 

console.log(b) // output eyJhIjoiZm9vIiwiYiI6WzEsMiwzXSwiZyI6eyJxIjoiODc5OCJ9fQ

// restore b again 
console.log(JSON.parse(window.atob(b))); // output : {a:'foo',b:[1,2,3],g: {q:"8798"}}

答案 3 :(得分:0)

谢谢大家, 我使用过JSON.stringify(filters); 并在控制器

String filtersString = request.getParameter("filters");
Map<String,Object> result = new ObjectMapper().readValue(filtersString, HashMap.class);

如果有更好的方法,请回复。