我对Spring 3没有使用表达式语言在jsp中渲染我的模型感到有点失望,我不得不承认我不明白为什么。如果有人能帮助我理解为什么我不能使它工作,那将是非常好的。
这是我的背景:
我的控制器有一个方法(由我的客户端的ajax调用)返回一个jsp片段:
@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST)
public String getGoatCard(@RequestParam Long id,
@ModelAttribute("goat") Goat goat) {
goat = goatDataService.findGoatById(id);
return "goatCard";
}
我使用requestParam调用此方法,允许hibernate检索所需的Bean(模型包含所有必需的数据,已经检查过)。
然后这个方法重新命名一个名为“goatCard”的jsp;这是jsp代码:
<input name="goat.goatName" type="hidden" value="${goat.goatName}"/>
(这不是整个页面代码,因为如果提供的代码太多,这将不容易阅读。我的jsp包含JQuery easyui和highcharts javaScript librairies)
我虽然注释@ModelAttribute(“goat”)将名为“goat”的模型链接到我的jsp,允许使用EL渲染模型,但似乎并非如此。
有没有人有任何想法,也许这只是我做错了一件小事但我看不出哪一个!!!!
答案 0 :(得分:0)
@ModelAttribute 用于检索表单模型,而不是设置为在JSP中显示。 如果需要在JSP中显示数据,则必须先将数据添加到Model中。
@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST)
public ModelAndView getGoatCard(@RequestParam Long id) {
ModelAndView mv = new ModelAndView("goatCard");
Goat goat = goatDataService.findGoatById(id);
mv.addObject("goat",goat);
return mv;
}
然后山羊在JSP文件中可用。 顺便说一下,为了检索数据,最好使用 RequestMethod.GET 。
答案 1 :(得分:0)
非常感谢你的帮助。只是更新代码的答案。 当我使用Spring 3时,最好写
@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST)
public String getGoatCard(@RequestParam Long id,
Model model) {
model.addAttribute("goat", goatDataService.findGoatById(id));
return "goatCard";
}
它只是为了更适合Spring Foundation的预先规划(我同意这导致相同的结果,但SpringSource建议使用String return而不是mav)。
再次感谢您的帮助