복붙노트

[SPRING] Spring MVC 누락 행렬 변수

SPRING

Spring MVC 누락 행렬 변수

SpringMVC를 사용하여 Rest Controller에 행렬 매개 변수 (또는 행렬 변수)를 추가하려고합니다 (Spring 부트 1.2.3.RELEASE에서) 여기 내 코드가 있습니다 :

@RestController
public class SubAgentsController {

    @RequestMapping(value = "/{subagents}", method = RequestMethod.GET)
    public SubAgent subAgents(@MatrixVariable(value="agentName", pathVar="subagents") String agentName) {
        System.out.println(agentName);
    }
}

불행히도, 내가 얻으려고 할 때 : http : // localhost : 8080 / subagents; agentName = hello

그것은 내가받는 대답입니다.

내가 뭘 잘못 했니? http://docs.spring.io/spring-framework/docs/3.2.0.M2/reference/html/mvc.html에 따라 작동해야합니다 :-(

귀하의 답변에 감사드립니다!

해결법

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

    1.상태에 링크 된 문서로서,

    상태에 링크 된 문서로서,

    WebMvcConfigurationSupport를 확장하여 응용 프로그램을 구성하는 경우 RequestMappingHandlerMapping을 준비하고 적절한 특성을 설정하는 requestMappingHandlerMapping 메소드를 대체하십시오.

    @Override
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        final RequestMappingHandlerMapping requestMappingHandlerMapping = super.requestMappingHandlerMapping();
        requestMappingHandlerMapping.setRemoveSemicolonContent(false); // <<< this
        return requestMappingHandlerMapping;
    }
    

    그러면 모든 것이 설정됩니다.

    Spring Boot를 사용하면 위와 같이 @Bean 메소드를 선언하는 것이 필요하다. RequestMappingHandlerMapping 인스턴스를 리턴합니다.

  2. ==============================

    2.Spring Boot Application에서 Matrix 변수를 활성화하려면 아래의 재정의 코드를 정의해야합니다.

    Spring Boot Application에서 Matrix 변수를 활성화하려면 아래의 재정의 코드를 정의해야합니다.

    @Configuration
    public class WebConfig extends WebMvcConfigurerAdapter {
    
        @Override
        public void configurePathMatch(PathMatchConfigurer configurer) {
            UrlPathHelper urlPathHelper = new UrlPathHelper();
            urlPathHelper.setRemoveSemicolonContent(false);
            configurer.setUrlPathHelper(urlPathHelper);
        }
    }
    

    그렇지 않으면 기본적으로 사용 중지됩니다.

  3. from https://stackoverflow.com/questions/30539783/spring-mvc-missing-matrix-variable by cc-by-sa and MIT license