0

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

有没有人知道,也许只是我做错了一件小事,但我看不出是哪一个!!!!

4

2 回答 2

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;
}

然后 goat 在 JSP 文件中可用。顺便说一句,为了检索数据,最好使用RequestMethod.GET

于 2013-03-11T10:08:02.383 回答
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)。

再次感谢您的帮助

于 2013-03-12T11:52:21.033 回答