복붙노트

[SPRING] @RequestMapping 정규 표현식

SPRING

@RequestMapping 정규 표현식

나는이 같은 URL을 매핑 봄 @RequestMapping 주석에 대한 가치 속성을 만들려고 노력하고있어.

/educationDistrict/308/action/resetAddressesForYear/1

/educationDistrict/308/action/resetAddressesForYear

나는 이것을 가지고있다.

@RequestMapping(value = "/{repository}/{id}/action/{methodName:[A-z]*}{v:.*}", method = RequestMethod.POST)

하지만 첫 번째 URL은 일치하지 않습니다.

나는 스프링 - 증오 때문에 다중 가치를 사용할 수 없다. https://github.com/spring-projects/spring-hateoas/issues/186

봄 4.1.5

해결법

  1. ==============================

    1.@RequestMapping의 URL 매핑 끝에 / **를 추가하십시오. 그리고 다음과 같이 URL의 마지막 부분을 검색 할 수 있습니다.

    @RequestMapping의 URL 매핑 끝에 / **를 추가하십시오. 그리고 다음과 같이 URL의 마지막 부분을 검색 할 수 있습니다.

    @RequestMapping(value = "/{repository}/{id}/action/{methodName:[A-z]*}{v:.*}/**", method = RequestMethod.GET)
    public ModelAndView welcome(@PathVariable("methodName") String name, HttpServletRequest request) {
    
        String mvcPath = (String) request.getAttribute(
                HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
        int index = StringUtils.lastIndexOf(mvcPath, "/");
    
        System.out.println("Method name - " + name);        
        System.out.println("Rest of the URL - " + mvcPath.substring(index+1));
    
        ModelAndView model = new ModelAndView();
        model.setViewName("index");
        model.addObject("name", mvcPath);
    
        return model;
    }
    

    참고 : StringUtils Apache Commons를 사용하여 /의 마지막 색인을 찾습니다.

  2. from https://stackoverflow.com/questions/29160917/requestmapping-regular-expression by cc-by-sa and MIT license