代码之家  ›  专栏  ›  技术社区  ›  Esteban S

在javascript中读取弹簧控制器模型

  •  1
  • Esteban S  · 技术社区  · 9 年前

    我有一个控制器,JSONObject作为参数传递。我想用javascript(客户端)而不是服务器端(JSP)来处理对象“all”,所以我不想得到带有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模型属性吗?

    提前谢谢。

    2 回复  |  直到 9 年前
        1
  •  1
  •   Pankaj Pandey    9 年前

    JavaScript在客户端运行。您的模型 model.addAttribute("all",all); 不存在于客户端,它只存在于呈现.jsp时的服务器端。

    如果希望模型中的数据可用于客户端代码(即javascript),则需要将其存储在渲染页面中的某个位置。例如,您可以使用Jsp编写JavaScript,将模型分配给JavaScript变量。 例如 <script>var paramOne =<c:out value="${all}"/></script>

        2
  •  1
  •   birkett    9 年前

    当您使用 src ,您的浏览器(而不是后端)将尝试从

    "${pageContext.request.contextPath}/resources/js/all.js"
    

    因此服务器不会将该文件作为ModelView处理。