java - 如何按参数值拆分Spring MVC请求映射

标签 java spring spring-mvc

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

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

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

但事实并非如此。对于 /myurl 的 Controller 已经映射(第一种情况)的第二种情况,Spring 抛出异常。

是否有一些精确的按参数拆分请求映射的解决方案?可能会扩展 @RequestMapping 或使用代理作为 Controller 并根据参数调用不同的 Controller ...... 有什么想法吗?

更新 这只适用于方法级别,而不是类级别...... 这将:

@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 {....}
}

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

最佳答案

这听起来像是使用 RequestMappingHandlerMapping(Spring 3.1 中的新功能)与 DefaultAnnotationHandlerMapping(被 RequestMappingHandlerMapping 替换的类)之间的区别。

关于java - 如何按参数值拆分Spring MVC请求映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208210/

相关文章:

java - 如何忽略登录表单上的Spring数据验证?

java - Spring Framework 3.2.8 中的 org.eclipse.persistence.exceptions.ValidationException

java - IntelliJ IDEA 测试覆盖率窗口不显示

java - 重用Spring MVC构建应用程序(Java)

oracle - 没有更多数据可以从套接字错误中读取

java - spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults 有什么用?

java - 更改 REST API 响应中的字段名称

java - Spring 形式选择选项

java - java中的数学问题试图找出我的代码有什么问题

java - 如何在 Java 中找到文本字符串的真实可见大小