如何在Spring MVC中访问html页面中的模型属性?

时间:2017-11-16 12:14:59

标签: spring spring-mvc

我有Spring MVC项目,其中视图是html页面。我在我的Controller方法中设置了model属性,但无法在html视图页面上访问它。

这是我的Controller方法。

    for(...){
        //code
        if(...){
            //code
            if(...){
                //code
                if(...){
                    //code
                    if(...){
                        //code
                        if(...){
                            //code
                            if(...){
                                //code
                            }
                            //code
                        }
                        //code
                    }
                    //code
                }
                //code
            }
            //code
        }
        //code
    }

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

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

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

 }

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

2 个答案:

答案 0 :(得分: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中添加 @RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody MyDataClass getData() { final MyDataClass myDataClass = new MyDataClass(); myDataClass.setName("Jacky"); return myDataClass; } classpath而不是将你的对象转换成字符串,你可以直接返回你的类(spring将处理对象序列化为json):

{{1}}

这看起来要比第一个更清洁。

您可以查看一些有关此内容的教程,以便更好地了解其工作原理here

答案 1 :(得分:0)

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

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

<script type="text/javascript">
    var name"1 = $(#name).val();
    console.log(name1);
 </script>