如何使用for循环在js中获取ModelAndView对象?

时间:2015-04-07 16:27:24

标签: javascript html spring java-ee

我想问一下,如何使用for循环在js中获取ModelAndView对象的值?

在控制器中,我写了这个:

@RequestMapping(value="SearchCourse.html", method=RequestMethod.GET)
public ModelAndView searchCourse() {
    ModelAndView model = new ModelAndView("/student/SearchCourse");
    model.addObject("schoolList", schoolService.listSchool());
    return model;
}

在js中,如果我写道:

${
    schoolList.get(0).getSchoolname()
}

然后,我可以得到结果。

但是,如果我写了一个for循环:

var schoolList = new Array();
for(var i = 0; i < "${schoolList.size()}"; i++) {
    alert("${schoolList.get("+i+").getSchoolname()}"); //error
}

然后,我会收到错误。 我知道我不能像上面那样编写代码,因为我滥用了语法。 但是,如何使用ModelAndView获取js中的schoolList?

2 个答案:

答案 0 :(得分:1)

第一个表达式不是JavaScript,而是jstl表达式。 如果要在JavaScript中访问模型,则需要为javascript变量赋值或将JSON对象返回给您的请求。 要为javascript数组赋值,您应该执行以下操作:

<script>
 var schoolList=new Array();
  <c:forEach items="schoolList" var="school">
      schoolList[]=${school.schoolname};
   </c:forEach>

</script>

请注意,此代码中混合了javascript和jstl。这是一个示例代码,可能存在错误。

检查下面与您的问题类似的答案。

How to transfer java array to javaScript array using jsp?

How to pass array from java to javascript

Converting a Java ArrayList of strings to a JavaScript array

答案 1 :(得分:1)

谢谢@jny!我自己想通了。 我们可以简单地使用下面的代码来获取列表并迭代列表。

<script>
var schoolList=${schoolList}
for(var i=0;i<schoolList.length;i++) {
  alert(schoolList[i].schoolname);
}
</script>