【问题标题】:Spring mvc:view-controller and component-scan setting prioritySpring mvc:view-controller 和 component-scan 设置优先级
【发布时间】:2013-08-27 03:58:09
【问题描述】:

在我的 spring mvc 上下文中,我有以下映射(还有更多,但这将给出一个总体思路)。 <mvc:view-controller path="/echo" view-name="echo"/>

<context:component-scan base-package="com.myapp.controllers"/>

我遇到的问题是我有一个带有 @RequestMapping(value = "/e{number}" 的带注释的控制器。在具有请求映射的同一控制器中,如果@PathVariable 不是整数,我会将用户转储到“家”。

但是,如果它们与路径/回声匹配,我不希望它们被丢弃到家中。我尝试在视图解析上设置<property name="order" value="0" />,但是,在没有上下文顺序的情况下,它仍然具有优先权。

如何设置组件扫描的优先级,或强制视图解析器在带注释的控制器之前首先匹配。

【问题讨论】:

  • 将视图解析器放在控制器前面听起来是个糟糕的主意(如果可以做到的话),特别是因为 UrlBasedViewResolver(或其他东西)和子类在找不到时会抛出异常匹配而不是通过链。如果您只希望控制器在路径变量为整数时介入,您应该为 RequestMapping 使用模式匹配选项,/e{number:\d+} 之类的东西应该引导您朝着正确的方向进行 Google 搜索。
  • 我尝试了`@RequestMapping(value = "/e{number:\\d+}"` 和@RequestMapping(value = "/e{^\\+?\\d+\$}",但都没有成功。我将继续尝试,看看我能找到什么。
  • 我尝试了 @RequestMapping(value = "/{^\\e+?\\d+\$}" 并收到 400 错误说 The request sent by the client was syntactically incorrect.
  • 我对正则表达式的映射提出了不同的问题。 stackoverflow.com/questions/18422368/regex-in-spring-controller
  • @MattWhipple,请提交您的评论作为答案,以便我将其标记为正确。当您有 {number:\d+} 时,我误解了您的评论,因为我正在清理我的代码,我将我的实际 var 名称换成了 number,但没有意识到这就是您所提到的。我在stackoverflow.com/questions/18422368/regex-in-spring-controller/… 提出了另一个问题,这为我解决了问题。再次感谢您!

标签: java spring spring-mvc


【解决方案1】:

将视图解析器放在控制器前面听起来是个糟糕的主意(如果能够做到的话),尤其是因为 UrlBasedViewResolver(或其他东西)和子类在找不到匹配项而不是通过时抛出异常连锁,链条。如果您只希望控制器在路径变量为整数时介入,您应该为 RequestMapping 使用模式匹配选项,/e{number:\d+} 之类的东西应该会引导您朝着正确的方向进行 Google 搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-26
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多