使用spring mvc从HttpServletRequest获取数据

H.d*_*guy 6 java servlets spring-mvc

我是Spring MVC的新手.

我想要实现的是将数据映射添加到HttpServletRequest中; 例:

private NewRequestService newRequest = new NewRequestService();

public ModelAndView inputRequiredInfo(@ModelAttribute("requestForm") HttpServletRequest request) {
  request.setAttribute("mylist", newRequest.loadAllUserDomainType());

  return new ModelAndView("request/selectDomainUser","requestForm", request);

}
Run Code Online (Sandbox Code Playgroud)

然后在视图jsp文件中,我想获取那些传入请求并将其放入下拉列表的数据.

Sot*_*lis 9

忘掉你现在所做的一切.

@Controller处理程序方法有两种方法可以使属性可用于JSP.

  1. 使您的方法接受HttpServletRequest参数并直接将目标对象设置为请求属性.
  2. 让你的方法接受Model,ModelMap,ModelAndView,或Map参数和设置目标对象对请求属性Model的参数.您还可以使您的方法返回上述任何一种方法.

对于2.春季将带你加入的元素Model,并把它们放进HttpServletRequest属性.然后在呈现JSP时它们可用.

我们举一些例子:

返回ModelAndView一个属性

public ModelAndView inputRequiredInfo() {
    Map map = newRequest.loadAllUserDomainType();

    return new ModelAndView("request/selectDomainUser","mylist", map);
}
Run Code Online (Sandbox Code Playgroud)

返回ModelAndView没有属性的a,但直接添加属性HttpServletRequest

public ModelAndView inputRequiredInfo(HttpServletRequest request) {
    Map map = newRequest.loadAllUserDomainType();
    request.setAttribute("mylist", map);
    return new ModelAndView("request/selectDomainUser");
}
Run Code Online (Sandbox Code Playgroud)

返回String视图名称,但将属性添加到Model传递的参数中

public String inputRequiredInfo(Model model) {
    Map map = newRequest.loadAllUserDomainType();
    model.addAttribute("mylist", map);
    return "request/selectDomainUser";
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,你可能已经过去了Model,ModelMap或者java.util.Map.

同样但有 HttpServletRequest

public String inputRequiredInfo(HttpServletRequest request) {
    Map map = newRequest.loadAllUserDomainType();
    request.setAttribute("mylist", map);
    return "request/selectDomainUser";
}
Run Code Online (Sandbox Code Playgroud)

有关已接受的方法参数的更完整列表,请参阅官方文档的第17.3.3节.在阅读时,还要阅读支持的返回类型,以了解返回ModelAndView和返回a 之间的区别String.