在我的 spring mvc 上下文中,我有以下映射(还有更多映射,但这将给出一个总体思路)。
<mvc:view-controller path="/echo" view-name="echo"/>
<context:component-scan base-package="com.myapp.controllers"/>
我遇到的问题是我有一个带注释的 Controller @RequestMapping(value = "/e{number}"
。在具有请求映射的同一 Controller 中,如果@PathVariable
,我将用户重定向到“home”。不是整数。
但是,如果它们与路径/回显匹配,我不希望它们被转储到主目录。我尝试设置 <property name="order" value="0" />
然而,根据 View 解决方案,在没有上下文命令的情况下,该解决方案仍然具有优先权。
如何设置组件扫描的优先级,或者强制 View 解析器在带注释的 Controller 之前首先匹配。
最佳答案
将 View 解析器放在 Controller 前面听起来是一个糟糕的主意(如果可以做到的话),特别是因为 UrlBasedViewResolver (或其他东西)和子类如果没有找到匹配而不是通过则抛出异常链式,链条。如果您只希望 Controller 在路径变量为整数时介入,则应使用 RequestMapping 的模式匹配选项,例如 /e{number:\d+}
应该引导您走向正确的方向Google 搜索的方向。
关于java - Spring MVC :view-controller and component-scan setting priority,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18414016/