在spring mvc中从javascript访问java变量

时间:2017-12-03 05:39:11

标签: javascript jsp spring-mvc

我对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()">

但我得到的值是空白的。这是我正在遵循的正确方式还是还有其他任何方式必须这样做?请帮忙

1 个答案:

答案 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>