I am new to Spring MVC.
What I want to achieve is to add a map of data into HttpServletRequest; Example:
private NewRequestService newRequest = new NewRequestService();
public ModelAndView inputRequiredInfo(@ModelAttribute("requestForm") HttpServletRequest request) {
request.setAttribute("mylist", newRequest.loadAllUserDomainType());
return new ModelAndView("request/selectDomainUser","requestForm", request);
}
And then in the view jsp file, I want to get those data which pass into the request and put it into dropdown list.
Forget what you've done right now.
There are two ways from a @Controller
handler methods to make attributes available to a JSP.
HttpServletRequest
parameter and set the target object as a request attribute directly. Model
, ModelMap
, ModelAndView
, or Map
parameter and set the target object as a request attribute on that Model
argument. You can also make your method return any of the above. For 2.
, Spring will take the elements you added to the Model
and put them into the HttpServletRequest
attributes. They will then be available while rendering the JSP.
Let's have some examples:
Return a ModelAndView
with one attribute
public ModelAndView inputRequiredInfo() {
Map map = newRequest.loadAllUserDomainType();
return new ModelAndView("request/selectDomainUser","mylist", map);
}
Return a ModelAndView
with no attributes, but add the attribute directly to HttpServletRequest
public ModelAndView inputRequiredInfo(HttpServletRequest request) {
Map map = newRequest.loadAllUserDomainType();
request.setAttribute("mylist", map);
return new ModelAndView("request/selectDomainUser");
}
Return a String
view name but add attributes to a Model
passed as argument
public String inputRequiredInfo(Model model) {
Map map = newRequest.loadAllUserDomainType();
model.addAttribute("mylist", map);
return "request/selectDomainUser";
}
In the above example, you could have passed Model
, ModelMap
, or java.util.Map
.
Same but with HttpServletRequest
public String inputRequiredInfo(HttpServletRequest request) {
Map map = newRequest.loadAllUserDomainType();
request.setAttribute("mylist", map);
return "request/selectDomainUser";
}
For a more complete list of accepted method arguments, see section 17.3.3 of the official documentation. While you are at it, also read the supported return types to understand the difference between returning a ModelAndView
and returning a String
.
This is not the correct way though.
You can use something like a model attribute.
Check the links below for a lot of answers on this:
How to pass model attributes from one Spring MVC controller to another controller?
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.