복붙노트

[SPRING] "/"가 포함 된 @pathVariable을 갖는 Spring @RequestMapping을 일치시키는 방법은 무엇입니까?

SPRING

"/"가 포함 된 @pathVariable을 갖는 Spring @RequestMapping을 일치시키는 방법은 무엇입니까?

고객으로부터 다음 요청을 받고 있습니다.

/ search / hello % 2Fthere /

여기서 "hello / there"라는 검색어가 URL 인코딩되었습니다.

서버에서 다음 요청 매핑을 사용하여이 URL과 일치 시키려고합니다.


@RequestMapping("/search/{searchTerm}/") 
public Map searchWithSearchTerm(@PathVariable String searchTerm) {
// more code here 
}

하지만 URL에 일치하는 항목이 없기 때문에 서버에서 404 오류가 발생합니다. 나는 Spring이 그것을 얻기 전에 URL이 해독되었음을 알아 차렸다. 그러므로 일치하는 / search / hello / there와 일치 시키려고합니다.

나는이 문제와 관련된 Jira를 여기에서 발견했다 : http://jira.springframework.org/browse/SPR-6780. 그러나 나는 아직도 나의 문제를 해결하는 방법을 모른다.

어떤 아이디어?

감사

해결법

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

    1.HttpServletResponse를 사용하지 않고 그것을 수행하는 좋은 방법은 없습니다. 다음과 같이 할 수 있습니다.

    HttpServletResponse를 사용하지 않고 그것을 수행하는 좋은 방법은 없습니다. 다음과 같이 할 수 있습니다.

    @RequestMapping("/search/**")  
    public Map searchWithSearchTerm(HttpServletRequest request) { 
        // Don't repeat a pattern
        String pattern = (String)
            request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);  
    
        String searchTerm = new AntPathMatcher().extractPathWithinPattern(pattern, 
            request.getServletPath());
    
        ...
    }
    
  2. from https://stackoverflow.com/questions/2334787/how-to-match-a-spring-requestmapping-having-a-pathvariable-containing by cc-by-sa and MIT license