Spring MVC - Request mapping, two urls with two different parameters
Is it possible in Spring to have one method with two different urls with different params for each method?
Below is pseudo code
@RequestMethod(URL1-param1, URL2-param2)
public void handleAction(@ModelAttribute("A") A a, ...) {
}
At the same time ULR1 is mapped in some other Controller as
@RequestMethod(URL1)
public void handleAction1(@ModelAttribute("A") A a, ...) {
}
开发者_如何学编程
Update: It appears your question is completely different.
No, you can't have the same url with different parameters in different controllers. And it doesn't make much sense - the url specifies a resource or action, and it cannot be named exactly the same way in two controllers (which denote different behaviours).
You have two options:
- use different URLs
- use one method in a misc controller that dispatches to the different controllers (which are injected) depending on the request param.
Original answer:
No. But you can have two methods that do the same thing:
@RequestMethod("/foo")
public void foo(@ModelAttribute("A") A a) {
foobar(a, null);
}
@RequestMethod("/bar")
public void bar(@ModelAttribute("B") B b) {
foobar(null, b);
}
If I haven't understood correctly, and you want the same ModelAttribute, then simply:
@RequestMapping(value={"/foo", "/bar"})
And finally - if you need different request parameters, you can use @RequestParam(required=false)
to list all possible params.
you can supply multiple mappings for your handler like this
@RequestMapping(value={"", "/", "welcome"})
public void handleAction(@ModelAttribute("A") A a, ...) { }
But if you want to use different parameters for each mapping, then you have to extract your method.
Something like this
@RequestMapping(value={"URL1"}, method=RequestMethod.POST)
public String handleSubmit(@ModelAttribute("A") A command, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
return helperSubmit();
}
@RequestMapping(value={"URL2"}, method=RequestMethod.POST)
public String handleSubmit(@ModelAttribute("A") A command, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
return helperSubmit();
}
private helperSubmit() {
return "redirect:" + someUrl;
}
精彩评论