当URL中有数字时,弹出URL匹配不区分大小写不会映射

时间:2013-09-04 22:24:30

标签: java spring spring-mvc

我试图让我的网址不区分大小写,并从网上获取以下代码。

但是现在当我的网址有号码时,它会给我状态400错误。在这次改变之前它工作得很好。现在无法识别像localhost \ toplevel \ 234 \ text \ 2342这样的URL。有人可以帮助解释为什么会发生这种情况以及需要改变哪些以使这些网址发挥作用。

     public class CaseInsensitiveAnnotationHandlerMapping  extends AntPathMatcher 
         protected boolean doMatch(String pattern, 
    String path, boolean fullMatch, Map<String, String> uriTemplateVariables) {
     return super.doMatch(pattern.toLowerCase(), 
path.toLowerCase(), fullMatch, uriTemplateVariables);
            }

    }

我的Servlet-Context.xml

    <beans:bean class="com.darproject.webUtils.CaseInsensitiveAnnotationHandlerMapping" /> 
    <beans:bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<beans:bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
    <beans:bean name="handlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <beans:property name="webBindingInitializer">
        <beans:bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
            <beans:property name="conversionService" ref="conversion-service"></beans:property>
            <beans:property name="validator">
                <beans:bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
                    <beans:property name="providerClass" value="org.hibernate.validator.HibernateValidator"></beans:property>
                </beans:bean>
            </beans:property>
        </beans:bean>
    </beans:property>
    <beans:property name="messageConverters">
        <beans:list>
            <beans:ref bean="byteArrayConverter"/>
            <beans:ref bean="jaxbConverter"/>
            <beans:ref bean="jsonConverter"/>
            <beans:bean class="org.springframework.http.converter.StringHttpMessageConverter"></beans:bean>
            <beans:bean class="org.springframework.http.converter.ResourceHttpMessageConverter"></beans:bean>
            <beans:bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></beans:bean>
            <beans:bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"></beans:bean>
        </beans:list>
    </beans:property>
</beans:bean>
<beans:bean name="byteArrayConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></beans:bean>
<beans:bean name="jaxbConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"></beans:bean>
<beans:bean name="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></beans:bean>
<beans:bean name="caseInsensitivePathMatcher" class="com.darproject.webUtils.CaseInsensitiveAnnotationHandlerMapping"/>
<beans:bean name="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
    <beans:property name="pathMatcher" ref="caseInsensitivePathMatcher"></beans:property>
</beans:bean>

现在无效的方法。

@RequestMapping(value="/commentswindow/{defectId}/{release}/{defectsRowID}",method=RequestMethod.POST)
public String addUserComments(
        @PathVariable("defectsRowID") long defectsRowID, 
        @PathVariable("defectId") String defectId,
        @PathVariable("release") String release, 
        @ModelAttribute("addComments") UserCommentsModel cmtModel, 
        BindingResult results, 
        Model model,
        HttpServletRequest request, 
        HttpServletResponse response){

1 个答案:

答案 0 :(得分:1)

与路径变量映射不区分大小写的冲突。您可以将变量名称更改为全部小写:defectId - &gt; defectid。它应该工作。

@RequestMapping(value="/commentswindow/{defectid}/{release}/{defectsrowid}",method=RequestMethod.POST)public String addUserComments(
    @PathVariable("defectsrowid") long defectsRowID, 
    @PathVariable("defectid") String defectId,
    @PathVariable("release") String release, 
    @ModelAttribute("addComments") UserCommentsModel cmtModel, 
    BindingResult results, 
    Model model,
    HttpServletRequest request, 
    HttpServletResponse response){