복붙노트

[SPRING] 스프링 MVC 3의 안정된 경로 매개 변수

SPRING

스프링 MVC 3의 안정된 경로 매개 변수

* -servlet.xml 파일의 mvc : view-controller 요소 나 컨트롤러 메서드에서 URI 템플릿을 설정 한 다음 JSP에서 해당 경로 매개 변수를 사용하거나 가져올 수 있습니까?

컨트롤러 메서드에서 @PathVariable을 사용하면 해당 컨트롤러 메서드의 path 매개 변수에 대한 액세스 권한이 부여됩니다. 하지만 JSP에서 path 매개 변수에 액세스하려면 어떻게해야합니까?

예를 들어, 다음과 같이 할 수 있습니까?

* -servlet.xml 파일 :

<beans...>
<mvc:view-controller path="/home" view-name="home"/>
<mvc:view-controller path="/home/{error}" view-name="home"/>
</beans>

JSP 파일 :

<c:if test="${not empty param['error']}">
<span class="error">You have an error...</span>
</c:if>

해결법

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

    1.jsp에서 액세스하려면 컨트롤러에서 속성으로 반환하십시오.

    jsp에서 액세스하려면 컨트롤러에서 속성으로 반환하십시오.

    @RequestMapping("/home/{error}")
    public void handleError(@PathVariable String error, ModelMap model) {
        //your regular stuff
    
        model.addAttribute("error", error);
    }
    

    -

    <c:if test="${not empty error}">
    <span class="error">You have an error...</span>
    </c:if>
    
  2. ==============================

    2.해결 된 경로 변수의 Map은 HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE에 의해 지정된 이름을 가진 속성으로 표시됩니다. 그래서 해결책은

    해결 된 경로 변수의 Map은 HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE에 의해 지정된 이름을 가진 속성으로 표시됩니다. 그래서 해결책은

    <c:if test="${not empty requestScope['org.springframework.web.servlet.HandlerMapping.uriTemplateVariables']['error']}">
    

    하지만이 방법으로 접근하는 것은 좋은 생각이 아닙니다. Affe의 솔루션은 더 깨끗합니다.

  3. from https://stackoverflow.com/questions/2951012/restful-path-parameters-in-spring-mvc-3 by cc-by-sa and MIT license