복붙노트

[SPRING] Spring MVC에서 컨트롤러와 액션 메소드를 기반으로 URL을 생성하려면 어떻게해야합니까?

SPRING

Spring MVC에서 컨트롤러와 액션 메소드를 기반으로 URL을 생성하려면 어떻게해야합니까?

나는 봄 MVC 3.0을 사용하고있다.

GuestBookController의 로그인 메소드를 가리키는 링크를 만들고자하는 guestbook.jsp 페이지가 있습니다.

이것은 대부분의 웹 프레임 워크가 처리하는 간단한 작업입니다 (예 : grails는 g : link 태그로 처리합니다). 그러나 공식 SpringMVC 문서에서는이 문서를 찾을 수 없었습니다.

그래서 내 머리를 긁적입니다 -이 기능은 일부 태그 라이브러리에 있습니까? 프레임 워크가 그것을 노출합니까? 이 기능을 사용하려면 프레임 워크를 확장해야합니까?

참고, URL (하드 코드는 분명하지만 약한 솔루션)을 하드 코딩하지 않고 컨트롤러 및 액션 이름을 기반으로 URL을 생성합니다.

최신 정보: Spring MVC는이 기능을 제공하지 않는다. JIRA 티켓이 있습니다. 여기에서 투표 할 수 있습니다. https://jira.springsource.org/browse/SPR-5779

해결법

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

    1.짧은 대답은 '아니오'입니다. 현재 스프링 MVC로는이 작업을 수행 할 수 없습니다.

    짧은 대답은 '아니오'입니다. 현재 스프링 MVC로는이 작업을 수행 할 수 없습니다.

    Grails (Spring MVC를 사용하는)를 포함한 다른 프레임 워크에서이 작업을 수행 할 수 있기 때문에 부끄러운 일입니다.

    이 기능을 추가하기위한 Spring 기능 요청에 대한 링크를 포함하는 토론을 여기에서보십시오 (투표하십시오).

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

    2.Spring MVC는 JSP에서 표준 JSTL 태그를 사용하므로 :

    Spring MVC는 JSP에서 표준 JSTL 태그를 사용하므로 :

    <c:url value="/guestBook.html" var="guestBookLink" />
    <a href="${guestBookLink}">Guest Book</a>
    

    귀하의 컨트롤러 :

    @RequestMapping(value = "/guestBook")
    public String handleGuestBook() { ... }
    
  3. ==============================

    3.다음과 같이 @RequestMapping으로 로그인 메소드에 주석을 답니다.

    다음과 같이 @RequestMapping으로 로그인 메소드에 주석을 답니다.

    @Controller
    public class GuestBookController {
      ...
      @RequestMapping(value="/mycontextroot/login", method = RequestMethod.GET)
      public String login() {
        ...
      }
      ...
    }
    

    그런 다음 JSP에서 다음과 같은 링크를 만듭니다.

    <c:url var="loginlink" value="/mycontextroot/login.html">
    </c:url>
    <a href="${loginlink}">Login</a>
    

    여기서는 발송자 서블릿이 * .html URL을 찾고 있다고 가정합니다.

  4. ==============================

    4.오랫동안 나는 CGLib 프록시를 사용하여 이와 같은 것을 구현하려고 생각했지만 너무 게을 렀다. Spring HATEOS 라이브러리가 내가 다른 사람들에게 위임하고 다양한 방식으로 프록시 방식으로 당신을 허용 할 것으로 보인다.

    오랫동안 나는 CGLib 프록시를 사용하여 이와 같은 것을 구현하려고 생각했지만 너무 게을 렀다. Spring HATEOS 라이브러리가 내가 다른 사람들에게 위임하고 다양한 방식으로 프록시 방식으로 당신을 허용 할 것으로 보인다.

  5. from https://stackoverflow.com/questions/6022980/how-can-i-create-a-url-based-on-controller-and-action-method-in-spring-mvc by cc-by-sa and MIT license