복붙노트

[SPRING] Spring MVC - 요청 매핑, 두 개의 다른 매개 변수가있는 두 개의 URL

SPRING

Spring MVC - 요청 매핑, 두 개의 다른 매개 변수가있는 두 개의 URL

Spring에서 각각의 메소드에 대해 서로 다른 매개 변수를 갖는 두 개의 서로 다른 URL을 가진 하나의 메소드를 가질 수 있습니까?

아래는 의사 코드입니다.

@RequestMethod(URL1-param1, URL2-param2)
public void handleAction(@ModelAttribute("A") A a, ...) {
}

동시에 ULR1은 다른 컨트롤러에서 다음과 같이 맵핑됩니다.

@RequestMethod(URL1)
public void handleAction1(@ModelAttribute("A") A a, ...) {
}

해결법

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

    1.업데이트 : 귀하의 질문이 완전히 다른 것으로 보입니다.

    업데이트 : 귀하의 질문이 완전히 다른 것으로 보입니다.

    아니요, 다른 컨트롤러에서 다른 매개 변수를 사용하여 동일한 URL을 가질 수 없습니다. URL은 자원이나 동작을 지정하고 두 컨트롤러 (다른 동작을 나타냄)에서 똑같은 이름을 지정할 수는 없습니다.

    두 가지 옵션이 있습니다.

    원문 답변 :

    아닙니다.하지만 같은 일을하는 두 가지 방법을 사용할 수 있습니다.

    @RequestMethod("/foo")
    public void foo(@ModelAttribute("A") A a) {
        foobar(a, null);
    }
    
    @RequestMethod("/bar")
    public void bar(@ModelAttribute("B") B b) {
        foobar(null, b);
    }
    

    제대로 이해하지 못했고 동일한 ModelAttribute를 원한다면 간단히 다음을 수행하십시오.

    @RequestMapping(value={"/foo", "/bar"})
    

    마지막으로 - 다른 요청 매개 변수가 필요한 경우 @RequestParam (required = false)을 사용하여 가능한 모든 매개 변수를 나열 할 수 있습니다.

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

    2.당신은 다음과 같이 당신의 처리기를위한 다중 매핑을 제공 할 수있다.

    당신은 다음과 같이 당신의 처리기를위한 다중 매핑을 제공 할 수있다.

    @RequestMapping(value={"", "/", "welcome"})
    public void handleAction(@ModelAttribute("A") A a, ...) { }
    

    그러나 각 매핑에 대해 다른 매개 변수를 사용하려면 메서드를 추출해야합니다.

  3. ==============================

    3.이 같은

    이 같은

    @RequestMapping(value={"URL1"}, method=RequestMethod.POST)
    public String handleSubmit(@ModelAttribute("A") A command, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        return helperSubmit();
    }
    
    @RequestMapping(value={"URL2"}, method=RequestMethod.POST)
    public String handleSubmit(@ModelAttribute("A") A command, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        return helperSubmit();
    }
    
    private helperSubmit() {
      return "redirect:" + someUrl;
    }
    
  4. from https://stackoverflow.com/questions/6571307/spring-mvc-request-mapping-two-urls-with-two-different-parameters by cc-by-sa and MIT license