如何通过参数值拆分Spring MVC请求映射

时间:2012-02-09 09:26:50

标签: java spring spring-mvc

在Spring MVC 3中,我想用两个不同的控制器类来处理相同的url - 取决于url参数的值。 @RequestMapping 注释甚至有这样的字段: params ,我认为以下是两个不同的映射(我在类级别使用映射):

@RequestMapping(value = "/myurl", params = "name=val1")

@RequestMapping(value = "/myurl", params = "name=val2")

但事实并非如此。对于 / 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 {....}
}

这不会:

@Controller
@RequestMapping(value = "/myurl", params = "src=1")
public class Class123_1 {

    @RequestMapping(value = {"edit.htm"})
    public String open(Map<String, Object> map) throws Exception {....}
}


@Controller
@RequestMapping(value = "/myurl", params = "src=2")
public class Class123_2 {

    @RequestMapping(value = {"edit.htm"})
    public String open(Map<String, Object> map) throws Exception {....}
}

我想在不同的类中拆分逻辑。

1 个答案:

答案 0 :(得分:1)

使用RequestMappingHandlerMapping(Spring 3.1中的新增内容)与DefaultAnnotationHandlerMapping(由RequestMappingHandlerMapping替换的类)之间的区别似乎不同。