我有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},它应该打印杰克。 任何帮助将不胜感激,谢谢。
答案 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>