Spring MVC中如何访问html页面中的model属性?

问题描述 投票:0回答:2

我有 Spring MVC 项目,其中视图是 html 页面。我正在控制器方法中设置模型属性,但无法在 html 视图页面上访问它。

这是我的控制器方法。

@RequestMapping(value = "/", method = RequestMethod.GET)
 public ModelAndView getData() {

  ModelAndView model =new ModelAndView();
  model.addObject("name", "Jack");
  model.setViewName("html/firstLayer.html");
  return model;

 }

这就是我在 html 页面中访问它的方式

<script type="text/javascript">
    var name1 ='${name}' ;
    console.log(name1);
 </script>

但是在控制台上它正在打印 ${name},它应该打印 Jack。 任何帮助将不胜感激,谢谢。

spring spring-mvc
2个回答
0
投票

您不能直接通过 JavaScript 来做到这一点。您需要使用 JSP 文件来检索您设置的服务器端 ModelAndView 变量。

或者您可以采用更好的解决方案。

@RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public String getData() throws JsonProcessingException {
    Map<String, Object> myData = new LinkedHashMap<>();
    myData.put("name", "Jacky");
    ObjectMapper objectMapper = new ObjectMapper();
    return objectMapper.writeValueAsString(myData);
}

基本上,当您执行 get 操作时,您将返回一个字符串到客户端,然后您可以通过 ajax 调用从请求中获取该字符串,并根据需要使用 javascript 操作数据。

剧透:这是一个非常粗糙的实现。我建议将

Map
更改为一个对象,就像一个单独的类
MyDataClas
,其中包含您想要的字段,如果您使用
spring web
,您可以在类路径中添加
jackson
,而不是将对象转换为string,你可以直接返回你的类(spring会处理对象序列化为json):

 @RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody MyDataClass getData() {
    final MyDataClass myDataClass = new MyDataClass();
    myDataClass.setName("Jacky");
    return myDataClass;
}

这看起来比第一个更好,也更干净。

您可以查看一些与此相关的教程,以更好地了解其工作原理这里


0
投票

在 html 中我们可以使用模型值。因此,当加载文档时,名称将在页面中显示为隐藏字段。使用 javascript 或 jquery 我们可以访问它。这是一个例子:

<input type="hidden" id="name" value='${name}'/>

<script type="text/javascript">
    var name"1 = $(#name).val();
    console.log(name1);
 </script>
© www.soinside.com 2019 - 2024. All rights reserved.