我是 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);
}
然后在 View jsp 文件中,我想获取传递到请求中的那些数据并将其放入下拉列表中。
最佳答案
忘记你现在做了什么。
@Controller
处理程序方法有两种方法可以使属性对 JSP 可用。
- 让您的方法接受一个
HttpServletRequest
参数并直接将目标对象设置为请求属性。 - 使您的方法接受
Model
、ModelMap
、ModelAndView
或Map
参数并设置目标对象作为该Model
参数的请求属性。您还可以让您的方法返回上述任何内容。
对于2.
,Spring 会将您添加到Model
的元素放入HttpServletRequest
属性中。然后,它们将在呈现 JSP 时可用。
让我们举几个例子:
返回一个具有一个属性的ModelAndView
public ModelAndView inputRequiredInfo() {
Map map = newRequest.loadAllUserDomainType();
return new ModelAndView("request/selectDomainUser","mylist", map);
}
返回一个没有属性的ModelAndView
,但是直接给HttpServletRequest
加上属性
public ModelAndView inputRequiredInfo(HttpServletRequest request) {
Map map = newRequest.loadAllUserDomainType();
request.setAttribute("mylist", map);
return new ModelAndView("request/selectDomainUser");
}
返回一个 String
View 名称,但将属性添加到作为参数传递的 Model
public String inputRequiredInfo(Model model) {
Map map = newRequest.loadAllUserDomainType();
model.addAttribute("mylist", map);
return "request/selectDomainUser";
}
在上面的示例中,您可以传递 Model
、ModelMap
或 java.util.Map
。
相同但使用 HttpServletRequest
public String inputRequiredInfo(HttpServletRequest request) {
Map map = newRequest.loadAllUserDomainType();
request.setAttribute("mylist", map);
return "request/selectDomainUser";
}
有关可接受的方法参数的更完整列表,请参阅 section 17.3.3 of the official documentation.当您阅读它时,还请阅读支持的返回类型以了解返回 ModelAndView
和返回 String
之间的区别。
关于java - 使用 spring mvc 从 HttpServletRequest 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18690916/