我想在我的服务器(使用 Spring)和客户端(在 ExtJS 中)之间实现透明数据传递。
在服务器端,我有 Spring 控制器返回 ModelAndView 对象(使用 JSP)。我通常不创建模型对象,我只是将项目放入模型 Map 中。
我想要简单透明的 Java 到 Javascript 对象转换。在服务器端,我将一个 Java Date 对象放入地图中,然后在客户端获得一个 Javascript Date 对象。即在服务器上我写了这样的代码:
public ModelAndView getModelAndView(User user) {
Map<String, Object> modelMap = new HashMap<String, Object>();
modelMap.put("date", new Date());
modelMap.put("intarray", new int[] {1,2,3});
return new ModelAndView("mainpage", modelMap);
}
在客户端我用 JSP 编写:
var model = <someMagicTagOrSomething />
在呈现的 HTML 中,我得到:
var model = {
date: Date.parse('2012-01-01 12:12:12', 'Y-m-d H:m:s'), //JS Date object
intarray: [1,2,3]
}
我在 Spring 文档中看到的大部分内容都涉及使用 @NumberFormat(style=Style.PERCENT) 之类的注释在服务器上指定对象格式,然后使用 form:input 标签在客户端上获取它们。这不是我想要的,因为我想在客户端格式化日期,而不用担心它们以什么格式传输给客户端。
实现这一目标的最佳方法是什么?是否有开箱即用的解决方案,还是我需要自己写一些东西?我知道我可以使用像 Gson 这样的库将我的模型转换为 JSON,但这会将 Java 日期作为字符串返回,我想立即获取 Javascript 日期对象,而不必担心格式化。
感谢您的任何建议,
彼得