我有一个控制器,其中JSONObject作为参数传递。我想在javascript(客户端)中使用对象“all”而不是在服务器端(JSP),因此我不想使用JSP标记获取对象。
@RequestMapping(value = { "/dfi/rca" }, method = RequestMethod.GET)
public String getRcaResult(Model model, String flight_id) {
...
JSONObject all = new JSONObject ();
...
model.addAttribute("all",all);
return "dfi/rca";
}
我有一个JSP文件导入Javasript文件,我使用该属性,但我不知道如何访问它。如果我在JSP文件中使用此代码,它可以正常工作:
<script type="text/javascript">
var all= "${all}";
</script>
但是如果我尝试在JSP中导入一个Javascript文件,它就不会得到任何东西:
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/all.js"></script>
在all.js中:
var rcaresults = JSON.parse('${all}');
有没有办法在Javascript文件中读取Spring模型属性?
提前致谢。
答案 0 :(得分:1)
当您使用src
时,您的浏览器(而不是您的后端)将尝试从
"${pageContext.request.contextPath}/resources/js/all.js"
因此服务器不会将文件作为ModelView处理。
答案 1 :(得分:1)
JavaScript在客户端运行。您的模型gradle
在客户端不存在,它只在您呈现.jsp时存在于服务器端。
如果您希望模型中的数据可用于客户端代码(即.javascript),则需要将其存储在呈现页面中的某个位置。例如,您可以使用Jsp编写JavaScript,将模型分配给JavaScript变量。
例如model.addAttribute("all",all);