我对spring mvc相对较新。我要做的是将一个变量作为模型属性传递,并尝试在我的JSP页面上使用javascript在页面加载时访问它。 我的java代码如下
model.addAttribute("leagueCode",leagueCode);
model.addAttribute("league","new");
return "redirect:/Dashboard";
在jsp方面,我试图通过以下方式访问它
<script type="text/javascript"> function myFunction() { var leagueCode=${leagueCode}; alert(leagueCode); } </script> </head> <body onload="myFunction()">
但我得到的值是空白的。这是我正在遵循的正确方式还是还有其他任何方式必须这样做?请帮忙
答案 0 :(得分:0)
在JSP页面中,您可以通过在<head>
中添加一个脚本标记将值设置为javascript变量,其中作为json对象在内部进行分配,例如:
<script>
var myServerSideVars = {
"aServerSideVarName" : "<here you set the value with el/jslt/scriptlet>",
"anotherServerSideVarName" : "<here you set the value with el/jslt/scriptlet>"
};
</script>
编辑我
使用EL(表达式语言)的示例,但如果您使用(<% %>
),则可以使用scriptlet完成相同的操作:
假设您在Servlet中将Car实例放入请求中,然后转发到JSP页面。
汽车:
public class Car{
protected String brand;
protected String year;
//getters and setters for the two properties.
}
在Servlet中,您将其放入请求中:
Car car = new Car();
car.setBrand("BMW");
car.setYear("2017");
request.setAttribute("carInRequest", car);
在JSP中,您将其设置为可从javascript访问的Json对象。在关闭body标签之前,我提供了一个如何从javascript访问var的简单示例。我没有运行它所以可能有一些拼写错误或错误纠正:
<%@taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>System.out.println</title>
<script>
var aCar= {
"brand" : "${requestScope.carInRequest.brand}",
"year" : "${requestScope.carInRequest.year}"
};
</script>
</head>
<body>
<h2>Brand: <span id="brandPlaceHolder"></span></h2>
<h2>Year: <span id="yearPlaceHolder"></span></h2>
</body>
<script>
var brandSpan = document.findElementById("brandPlaceHolder");
brandSpan.html = aCar.brand;
var yearSpan = document.findElementById("yearPlaceHolder");
brandSpan.html = aCar.year;
</script>
</html>