spring 3没有在jsp中渲染模型

时间:2013-03-11 09:45:17

标签: ajax jsp spring-mvc el spring-3

我对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渲染模型,但似乎并非如此。

有没有人有任何想法,也许这只是我做错了一件小事但我看不出哪一个!!!!

2 个答案:

答案 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)。

再次感谢您的帮助