Spring mvc:映射路径规则



我需要用@RequestMapping(value ="/client")为带注释的控制器中的所有方法映射截取器

映射中有

<mvc:interceptor>
   <mvc:mapping path="/app/client/*"/>
   <bean class="com.cci.isa.web.CIPClientHandleInterceptor" />
</mvc:interceptor>

这个拦截器非常适合以下url:
1. http://host/app/client/clientUpdateForm?clientId=305

但不调用url,如:
2. http://host/app/client/clientUpdateForm/clientId_305(方法名后面加斜杠)

它是如何被称为第二个变体的?

这个问题太老了,但也许这对某人有所帮助。

你应该试着删除/app,我认为这是不必要的,也许这是导致问题的原因。

<mvc:mapping path="/client/**"/>

我想这会达到你想要的效果:

<mvc:mapping path="/app/client/**/*"/>

'/**'表示任意数量的目录。当它与'/*'一起使用时,您可以查看任意文件夹深度,并使用任意文件名。

如果你的控制器带有

@RequestMapping(value = "/client")

<mvc:mapping path="/client**"/>

尝试上述建议,但将注释更改为

@RequestMapping(value = "/client*")

虽然我将为这两个URI模式中的每一个使用两个方法,并将它们传递给一个公共方法来做"事情"…

@RequestMapping(value = "/app/client/clientUpdateFormat/{clientId}", method = RequestMethod.GET)
 public String doItOne(@PathVariable("clientId") String clientId) {
    doItCommon(clientId);

@RequestMapping(value = "/app/client/clientUpdateFormat", method = RequestMethod.GET)
 public String doItTwo(@RequestParam("clientId")  String clientId) {
    doItCommon(clientId);

我的问题是,我们使用自定义RequestMappingHandlerMapping

<bean name="handlerMapping" 
class="utils.web.versioning.MobileVersionRewritingMappingHandler">
    <property name="order" value="0"/> 
    <property name="interceptors"> 
        <list> 
          ...
        </list> 
    </property>  
</bean>
CORS或任何其他MVC属性的XML或代码配置不会影响自定义处理程序映射。我可以为自定义处理程序映射指定cors配置,但我更喜欢删除遗留配置,并使用它来配置拦截器:
 <mvc:interceptors>
  ...
 </mvc:interceptors>

现在cors正在工作,我正在使用XML全局cors配置

最新更新