在Spring MVC 3中,我想使用两个不同的控制器类处理相同的url - 取决于url参数的值.@RequestMapping注释甚至有这样的字段:params,我认为以下是两个不同的映射(我在类级别使用映射):
@RequestMapping(value = "/myurl", params = "name=val1")
Run Code Online (Sandbox Code Playgroud)
和
@RequestMapping(value = "/myurl", params = "name=val2")
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.对于/ myurl控制器已映射的第二种情况,Spring抛出异常(通过第一种情况).
是否有一些通过参数拆分请求映射的准确解决方案?可能正在扩展@RequestMapping或使用代理作为控制器并根据参数调用不同的控制器......有什么想法吗?
更新 这可以工作但只在方法级别,而不是在类级别...这将:
@Controller
@RequestMapping(value = "/myurl")
public class Class123 {
@RequestMapping(value = {"edit.htm"}, params = "src=1")
public String open1(Map<String, Object> map) throws Exception {....}
@RequestMapping(value = {"edit.htm"}, params = "src=2")
public String open2(Map<String, Object> map) throws Exception {....}
}
Run Code Online (Sandbox Code Playgroud)
这不会:
@Controller
@RequestMapping(value = "/myurl", params = "src=1")
public class Class123_1 {
@RequestMapping(value = …Run Code Online (Sandbox Code Playgroud) 是否有可能在Spring中有一个方法,每个方法有两个不同的URL,每个方法有不同的参数?
下面是伪代码
@RequestMethod(URL1-param1, URL2-param2)
public void handleAction(@ModelAttribute("A") A a, ...) {
}
Run Code Online (Sandbox Code Playgroud)
同时ULR1映射到其他一些控制器中
@RequestMethod(URL1)
public void handleAction1(@ModelAttribute("A") A a, ...) {
}
Run Code Online (Sandbox Code Playgroud)