首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring的PropertiesMethodNameResolver的订购问题

Spring的PropertiesMethodNameResolver的订购问题
EN

Stack Overflow用户
提问于 2014-07-21 07:45:13
回答 1查看 256关注 0票数 0

我使用Spring的MultiActionController和PropertiesMethodNameResolver来映射URL来追加我的Controller类的方法。要求是将包含特定单词'abc‘的所有urls映射到一个方法,将'xyz’映射到第二个方法,以此类推。所有urls都可以是任意性长的,因此必须使用regex模式进行匹配,所有urls都以相同的扩展结束,其余的urls应该映射到默认方法。因此,我们使用以下方法:

代码语言:javascript
运行
复制
<bean id="paramMultiController" class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">
    <property name="methodNameResolver">
        <ref bean="propsResolver" />
    </property>
    <property name="delegate">
        <ref bean="methodsContainer" />
    </property>
</bean>

<bean id="methodsContainer" class="com.abc.controller.MethodsContainer"/>

<bean id="propsResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
    <property name="mappings">
        <props>
            <prop key="/">defaultMethod</prop>
            <prop key="/**/abc.ext">methodAbc</prop>
            <prop key="/def/**/*.ext">methodDef</prop>
            <prop key="/xyz/**/*.ext">methodXyz</prop>
            <prop key="/**/ijk/**/*.ext">makeIjk</prop>
            <prop key="/**/*.ext">defaultMethod</prop>
        </props>
    </property>
</bean>

这在我们使用Spring2.5之前一直有效,但是最近升级到Spring4.0时出现了问题。我发现问题的原因是PropertiesMethodNameResolver中的代码从Spring2.5更改到Spring3.0。早期的PropertiesMethodNameResolver使用迭代器对定义的映射进行迭代,并将其与请求的URL匹配,但是Spring3.0切换到开始使用枚举器,顺序混乱,导致URL大部分与defaultMethod匹配。

你能给我一个解决办法吗。我们希望在配置文件中按照我们定义的顺序处理(匹配) urls。请注意,我们不想使用注释,因为我们有太多的URL映射,使用注释将URL映射扩展到许多类,这使得合并和管理映射变得困难。

EN

Stack Overflow用户

回答已采纳

发布于 2014-07-21 10:26:09

您可以重写类getHandlerMethodNameForUrlPath的受保护方法PropertiesMethodNameResolver并实现所需的行为。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24859982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档