如何在JSP中从@ResponseBody获取列表?

时间:2013-10-03 19:17:03

标签: java spring jsp spring-mvc

我使用Spring MVC,我有一个方法控制器:

    @RequestMapping(value = "/listReader", method = RequestMethod.POST)
    public @ResponseBody
    List<Reader> getListReader(ModelMap model) {

        return libraryService.getAllReaders();
    }

但我不知道:

  • 如何在JSP中使用列表(我从getListReader获取@ResponseBody)?
  • 如何在JSP中获取列表?
  • 如何在JSP页面中显示列表?
  • 如何从JSP中的@ResponseBody获取列表?

请举个例子。

2 个答案:

答案 0 :(得分:3)

你做不到。 @ResponseBody基本上告诉Spring:将对象I(方法)返回并使用任何支持它的序列化程序并将其直接写入HTTP响应的主体。 这里没有涉及JSP。

相反,您应该将列表添加到模型中并返回JSP的String视图名称。

@RequestMapping(value = "/listReader", method = RequestMethod.POST)
public String getListReader(ModelMap model) {
    model.addAttribute("someKey", libraryService.getAllReaders());
    return "my-jsp";
}

然后你可以在JSP中使用EL来检索它

<h3>${someKey}</h3>

使用JSTL迭代它。

答案 1 :(得分:0)

@RequestMapping(value = "/listReader", method = RequestMethod.POST)

定义端点。 我建议使用RequestMethod.GET而不是RequestMethod.POST,因为您需要服务器中的某些内容而不是服务器POSTING。 另一方面,如果要在JSP上使用该信息,有两种方法:

1)某些视图可能会通过http-GET - jQuery中的$.get请求或ajax来使用该信息。获得数据后,您可以将其插入HTML

2)您可以直接在页面上显示ajax,而不是使用Expression Language。 然后,您必须将列表放入Model,您可以使用@ResponseBody在JSP上访问该列表。然后,您必须删除{{1}}并返回相应的视图。