복붙노트

[SPRING] Spring 요청 매핑 와일드 카드 예외

SPRING

Spring 요청 매핑 와일드 카드 예외

"/ some / resource / ** / something"과 같은 요청 매핑 중간에 / ** 와일드 카드를 넣을 수 있습니까?

봄 3에서 나는 이것을 할 수있다.

@RequestMapping("/some/resource/**")

지도로 만들다

/some/resource/A  -> ControllerMethod1
/some/resource/A/B -> ControllerMethod1
/some/resource/A/B/C/D/E/F -> ControllerMethod1

경로 파트 수에 상관없이

그러나이 매핑은 너무 욕심이고 하위 URL @RequestMapping ( "/ some / resource / ** / somthing")을 다음과 같은 다른 컨트롤러에 매핑 할 수 없습니다.

/some/resource/A/somthing  -> ControllerMethod2
/some/resource/A/B/somthing -> ControllerMethod2
/some/resource/A/B/C/D/E/F/somthing -> ControllerMethod2

내가 어떻게 할 수 있니?

해결법

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

    1.나는 당신이 필요로하는 URL 맵핑에서 앤트 스타일을 사용할 수 없다고 생각한다. 왜냐하면 다음 경로 분리 문자 '/'에서 멈추기 때문이다.

    나는 당신이 필요로하는 URL 맵핑에서 앤트 스타일을 사용할 수 없다고 생각한다. 왜냐하면 다음 경로 분리 문자 '/'에서 멈추기 때문이다.

    16.3.2.2를 시도해 보시기 바랍니다. 요청의 마지막 부분 만 매핑하기 위해 정규식을 사용하는 URI 템플릿 패턴 (아직이 방법을 시도하지 않았습니다).

    또한 PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE를 사용하여 요청의 나머지 부분과 일치시킬 수 있으며 거기에 일부 표현식을 적용 할 수 있습니다. 이 게시물을 확인하십시오.

    그렇지 않으면 요청 매개 변수를 사용하여 해당 조건을 일치시켜야합니다. 16.3.2.6. 요청 매개 변수 및 헤더 값.

    이 경우 params를 사용하여 매핑 할 것입니다.

    @RequestMapping(value = {"/some/resource/**"},  params="somthing")
    

    또는 메소드 서명에 필수 속성이 아닌 주석 요청 매개 변수를 사용하십시오.

    public void test(@RequestParam(value = "somthing", required=false) String str) {
    
  2. from https://stackoverflow.com/questions/19981012/spring-request-mapping-wildcard-exceptions by cc-by-sa and MIT license