我对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库)
我虽然注释@ModelAttribute(“ goat”)将名为“ goat”的模型链接到我的jsp,允许使用EL渲染模型,但事实并非如此。
有人有任何想法吗,也许只是我做错了一点小事,但我看不到哪一个!!!
@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 。