如何在javascript文件中访问Spring MVC模型对象?

我正在使用spring 3 MVC,我有以下课程。

外部系统将使用以下URL调用我的应用程序:

http://somehost/root/param1/param2/param3 

我有一个spring MVC控制器方法如下:

 public ModelAndView showPage(@PathVariable("param1") String paramOne, @PathVariable("param2") String paramTwo, @PathVariable("param3") String paramThree, HttpServletResponse response) { SomeModel model = new SomeModel(paramOne, paramTwo, paramThree); return new ModelAndView("SomeJsp", "model", model); } 

SomeModel.java

 public class SomeModel{ private String paramOne; private String paramTwo; private String paramThree; //constructor //setters and getters } 

SomeJsp.jsp

 //In this Jsp i have a div with few elements. Div is not visible by default. //This jsp has externalJavascript included. //I enable div and set the data into div elements using jquery. <script src="" type="text/javascript"> 

externalJs.js

 $(document).ready(function() { //Here i need the model returned using ModelAndView //I can get data from model and set into div elements. }); 

在外部java脚本文件中,是否可以获取模型内容? 如果可能的话,我该怎么做?

谢谢!

JavaScript在客户端运行。 您的模型在客户端不存在,它只在您呈现.jsp时存在于服务器端。

如果您希望模型中的数据可用于客户端代码(即.javascript),则需要将其存储在呈现页面中的某个位置。 例如,您可以使用Jsp编写JavaScript,将模型分配给JavaScript变量。

更新:

一个简单的例子

 <%-- SomeJsp.jsp --%>  

另一种解决方案可能是在JSP中使用:

并使用jQuery获取Javascript中的值:

var jsonBom = $('#jsonBom').val();

我最近遇到了同样的需求。 所以我尝试了Aurand的方式,但似乎代码缺少$ {}。 所以SomeJsp.jsp 的代码是:

  

请注意,您无法使用var model = ${model} ,因为它将分配一个java对象引用。 所以要在外部JS中访问它:

 $(document).ready(function() { alert(model.paramOne); }); 

这种方式有效,通过这种结构,您可以创建自己的框架,并使用较少的样板来完成。

对不起,如果出现一些错误,我会用手机轻轻地写这个

Maven依赖:

  com.google.code.gson gson 1.7.1  

Java的:

Person.java (Person Object Class)

 Class Person { private String name; public String getName() { return this.name; } public void setName(String name) { this.name = name; } } 

PersonController.java (Person Controller)

 @RestController public class PersonController implements Controller { @RequestMapping("/person") public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { Person person = new Person(); person.setName("Person's name"); Gson gson = new Gson(); ModelAndView modelAndView = new ModelAndView("person"); modelAndView.addObject("person", gson.toJson(person)); return modelAndView; } } 

视图:

person.jsp

   Person Example     

Person/h1>

使用Javascript:

personScript.js

 function parseJSON(data) { return window.JSON && window.JSON.parse ? window.JSON.parse( data ) : (new Function("return " + data))(); } $(document).ready(function() { var personJson = $('#person'); person = parseJSON(personJson.val()); alert(person.name); }); 

以下是我如何为javascript创建列表对象的示例:

 var listForJavascript = [];  var arr = []; arr.push(""); arr.push(""); listForJavascript.push(arr);  

您无法从JavaScript访问Java对象,因为客户端没有对象。 它只接收纯HTML页面(隐藏字段可以帮助,但它不是很好的方法)。

我建议你使用ajax和@ResponseBody