spring-mvc 예제 - Spring3 컨트롤러에서 "ModelAndView"또는 "String"을 반환하는 것이 더 좋습니다.




게시판 생성 (3)

나는 2 센트를 더하고 싶다. 두 번째 접근법은 관습 지향적입니다. 즉 개발자는 자신의 견해가 무엇인지 명시 적으로 언급하지만 암시적인 반환 문자열은 뷰 이름입니다. 코딩, 판독 및 표준이 적습니다. ModelAndView를 사용하면 기존 모델보다 훨씬 낫습니다.

반환 방법 ModelAndView

@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
    @UserAuth UserAuth user, 
    ModelAndView mav) {

    if (!user.isAuthenticated()) {
        mav.setViewName("redirect:http://www.test.com/login.jsp");
        return mav;
    }

    mav.setViewName("list");
    mav.addObject("articles", listService.getLists());

    return mav;
}

반환 방법 String

@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
    @UserAuth UserAuth user, 
    Model model) {

    if (!user.isAuthenticated()) {
        return "redirect:http://www.test.com/login.jsp";
    }

    model.addAttribute("articles", listService.getLists());

    return "list";
}

이것들은 동일합니다. 어느 쪽이 더 낫지? 차이점은 무엇입니까?


더 좋은 방법은 없습니다. 둘 다 완벽하게 유효합니다. 어느 것이 당신의 어플리케이션에 더 적합한 지에 따라 사용하도록 선택합니다 - Spring은 어느쪽으로 든 그것을 할 수있게합니다.

역사적으로 두 가지 접근법은 Spring의 서로 다른 버전에서 왔습니다. ModelAndView 접근 방식은 Spring 2.0 이전 버전의 컨트롤러에서 모델 정보와 뷰 정보를 반환하는 주요 방법이었습니다. 이제 Model 매개 변수와 String 반환 값을 결합 할 수 있지만 이전 방법은 여전히 ​​유효합니다.


public virtual int Id { get; protected set; }

protected set; <!-- 그건 당신 문제입니다. 기본 모델 바인더에서 값을 할당하려면 공용 설정자가 필요합니다.





spring-mvc controller