【问题标题】:Cannot access java variable in javascript无法在 javascript 中访问 java 变量
【发布时间】:2016-01-20 09:06:29
【问题描述】:

我正在尝试访问一个在 javascript 中保存 Json 数据的 java 变量,但我没有获取数据,而是获得了以下 html 源代码。

java:

 Gson gson = new Gson();
 String json = gson.toJson(obj);
 request.setAttribute("gsonData", gson);

javascript:

var dataset = ${gsonData};

html页面源码中的数据:

var dataset = {serializeNulls:falsefactories:[Factory[type=com.google.gson.JsonElement,
adapter=com.google.gson.internal.bind.TypeAdapters$25@719474],
com.google.gson.internal.bind.ObjectTypeAdapter$1@31d22,
 Factory[type=java.lang.String,
adapter=com.google.gson.internal.bind.TypeAdapters$13@1aacfcf],
 Factory[type=java.lang.Integer+int,
adapter=com.google.gson.internal.bind.TypeAdapters$7@977b2d],
 Factory[type=java.lang.Boolean+boolean,
adapter=com.google.gson.internal.bind.TypeAdapters$3@b18cbf],
 Factory[type=java.lang.Byte+byte,
adapter=com.google.gson.internal.bind.TypeAdapters$5@7964c6],
 Factory[type=java.lang.Short+short,
adapter=com.google.gson.internal.bind.TypeAdapters$6@1ec0cb1],
 Factory[type=java.lang.Long+long,
adapter=com.google.gson.internal.bind.TypeAdapters$8@9752b2],
 Factory[type=java.lang.Double+double,
adapter=com.google.gson.Gson$4@992d41],
 Factory[type=java.lang.Float+float,
adapter=com.google.gson.Gson$5@fedab9],
 Factory[type=java.lang.Number,
adapter=com.google.gson.internal.bind.TypeAdapters$11@89e335],
 Factory[type=java.lang.Character+char,
adapter=com.google.gson.internal.bind.TypeAdapters$12@1d2554],
 Factory[type=java.lang.StringBuilder,
adapter=com.google.gson.internal.bind.TypeAdapters$16@16294d3],
 Factory[type=java.lang.StringBuffer,
adapter=com.google.gson.internal.bind.TypeAdapters$17@1a4510f],
 Factory[type=java.math.BigDecimal,
adapter=com.google.gson.internal.bind.TypeAdapters$14@4b80c5],
 Factory[type=java.math.BigInteger,
adapter=com.google.gson.internal.bind.TypeAdapters$15@133375d],
 Factory[type=java.net.URL,
adapter=com.google.gson.internal.bind.TypeAdapters$18@30f324],
 Factory[type=java.net.URI,
adapter=com.google.gson.internal.bind.TypeAdapters$19@16be244],
 Factory[type=java.util.UUID,
adapter=com.google.gson.internal.bind.TypeAdapters$21@1501d84],
 Factory[type=java.util.Locale,
adapter=com.google.gson.internal.bind.TypeAdapters$24@1255f6c],
 Factory[typeHierarchy=java.net.InetAddress,
adapter=com.google.gson.internal.bind.TypeAdapters$20@a92e7f],
 Factory[type=java.util.BitSet,
adapter=com.google.gson.internal.bind.TypeAdapters$2@5a9aac],
 com.google.gson.internal.bind.DateTypeAdapter$1@1c5051e,
 Factory[type=java.util.Calendar+java.util.GregorianCalendar,
adapter=com.google.gson.internal.bind.TypeAdapters$23@6efe35],
 com.google.gson.internal.bind.TimeTypeAdapter$1@187e651,
 com.google.gson.internal.bind.SqlDateTypeAdapter$1@12c81b7,
 com.google.gson.internal.bind.TypeAdapters$22@3a8f79,
 com.google.gson.internal.bind.ArrayTypeAdapter$1@1744f5d,
 com.google.gson.internal.bind.TypeAdapters$26@16b870c,
 Factory[type=java.lang.Class,
adapter=com.google.gson.internal.bind.TypeAdapters$1@9f99af],
 com.google.gson.internal.Excluder@408302,
 com.google.gson.internal.bind.CollectionTypeAdapterFactory@c22e44,
 com.google.gson.internal.bind.MapTypeAdapterFactory@446bcc,
 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory@1d8ae60],
instanceCreators:{}};

访问数据的正确方法是什么?

【问题讨论】:

  • gsonData 是字符串吗?
  • 我认为你应该使用request.setAttribute("gsonData",json) - 使用json 变量,而不是gson 变量。

标签: javascript java json jsp


【解决方案1】:

你写的:

request.setAttribute("gsonData", gson);

但是你不想要更多吗:

request.setAttribute("jsonData", json);

即把 obj 的内容而不是 GSon 对象?

【讨论】:

    【解决方案2】:

    试试看:

    var dataset = JSON.decode(gsonData);
    dataset['serializeNulls:falsefactories'].Factory;
    

    【讨论】:

      猜你喜欢
      • 2019-03-29
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2016-09-14
      • 2021-08-23
      相关资源
      最近更新 更多