如何在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
。