Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在jquery中访问复杂模型的元素?_Java_Jquery_Spring_Jsp - Fatal编程技术网

Java 如何在jquery中访问复杂模型的元素?

Java 如何在jquery中访问复杂模型的元素?,java,jquery,spring,jsp,Java,Jquery,Spring,Jsp,我正在用SpringMVC制作一个jsp站点 protected String[] complexProperty = null;// ["something","something's value"] 在控制器中,我添加了 model.addAttribute("SetProperties", arrays);//where arrays is [] of complexProperties = [[1,a],[2,b],[]...] 在jsp站点中的javascript(jquer

我正在用SpringMVC制作一个jsp站点

protected String[] complexProperty = null;//    ["something","something's value"]
在控制器中,我添加了

model.addAttribute("SetProperties", arrays);//where arrays is [] of complexProperties = [[1,a],[2,b],[]...]
在jsp站点中的javascript(jquery)中,我希望访问具体元素,如

var complexProperty = '${SetProperties[0][0]}';// will give me 1
alert(whichTable+"  complex:"+complexProperty2);
现在我想在for循环中打印它们,所以我需要以某种方式动态地更改这些[0][0]。但是我不知道怎么做 我已经试过了

var temp=0;
var complexProperty = '${SetProperties[temp][temp]}';
var complexProperty = '${SetProperties["temp"]["temp"]}';
var complexProperty = '${SetProperties[${"temp"}][${"temp"}]}';
var complexProperty = '${SetProperties["${temp}"]["${temp}"]}';

但是他们没有一个给我1,要么是错误,要么是奇怪的东西。

从未使用过JSP,但也许您可以从这一点继续:

var complexProperty = ${SetProperties};

$.each(complexProperty, function( index, value ) {
  alert( index + ": " + value );
});

您将JSP变量与Javascript变量混合使用。最好的方法是,您的javascript代码调用后端来检索JSON对象,然后像其他javascript对象一样使用它

如果您有/想要在Javascript代码中使用objectfromHTTP请求属性,最好在JSP页面中将其序列化为JSON

根据类路径(Jackson/GSON)上的内容,您可以通过以下方式进行操作(GSON示例):


另一种方法是创建您自己的JSP函数,如下所述:

非常感谢您的代码。jackson json和google json之间有什么区别吗?它们都用于将Java对象序列化到json或从json反序列化Java对象,因此概念或多或少是相同的,但实现方式不同。问题是,如果您使用SpringMVC,并且已经使用JSON做了一些事情,那么很可能Jackson已经在您的类路径上了。
<%@ page import="com.google.gson.Gson" %>
<% Gson gson = new Gson(); %>
<script type="text/javascript">
    var setProperties = <%= gson.toJson(request.getAttribute("setProperties")) %>
</script>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.2.4</version>
</dependency>
for (var key in setProperties) {
    console.log(key, setProperties[key]);
}