Spring mvc:映射路径规则

时间:2011-08-02 19:40:53

标签: spring spring-mvc

我需要使用@RequestMapping(value =“/ client”)为注释控制器中的所有方法映射拦截器

在映射中我有

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

这个拦截器完全适用于网址,如: 1. http://host/app/client/clientUpdateForm?clientId=305

但不要求网址如下:
2. http://host/app/client/clientUpdateForm/clientId_305(方法名称后带斜线)

如何获得第二个变种?

非常感谢。

5 个答案:

答案 0 :(得分:5)

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

您应该尝试删除/app,我认为没有必要,也许这会导致问题。

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

答案 1 :(得分:1)

我认为这将实现您的目标:

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

'/ **'表示任意数量的目录。当它与'/ *'一起使用时,你会看到一个任意文件夹深度的文件名。

答案 2 :(得分:1)

如果你的控制器有

@RequestMapping(value = "/client")

尝试

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

答案 3 :(得分:0)

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

@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);

答案 4 :(得分:0)

我的问题是,我们使用自定义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配置。