cks
30
2020-09-25 02:15:33
4
142

스프링 예외처리 Model 관련 질문입니다


안녕하세요. 스프링 공부하고 있는 학생입니다.

예제를 보고 공부 하다가 이해 안되는 부분이 있어서

검색 해봤지만 마땅한 글이 없어서 오키에 질문 드립니다


@ExceptionHandler(Exception.class)
	public String except(Exception ex, Model model) {
		log.error("Exception...." + ex.getMessage());
		log.error(ex);
                model.addAttribute("ex", ex);
		return "error_page";
	}

ex를 Model에 담아서 뷰에 넘기는것은 이해 했습니다. 그래서 코드를 이리저리 바꿔보다가


@ExceptionHandler(Exception.class)
	public String except(@ModelAttribute("ex") Exception ex) {
		log.error("Exception...." + ex.getMessage());
		log.error(ex);
		return "error_page";
	}

@ModelAttribute 어노테이션을 써보기도 했는데 뷰에 넘어가지 않고


@ExceptionHandler(Exception.class)
	public String except(Exception ex) {
		log.error("Exception...." + ex.getMessage());
		log.error(ex);
		return "error_page";
	}

아예 아무것도 쓰지않았는데 뷰에 넘어가지 않은것은 Exception이 Java beans의 규칙에 

맞지 않아서 그런것 같습니다


질문1. @ModelAttribute를 썼을떄 뷰에 넘어가지 않는 이유가 뭔가요?

질문2. 아무것도 쓰지 않았을때 Exception이 뷰에 넘어가지 않는 이유는 Java beans의 규칙에 맞지 않기 때문인가요?


기초적인 질문이지만  정말 궁금해서 질문 남깁니다...

감사합니다

0
  • 답변 4

  • 보후리
    155
    2020-09-25 11:16:39

    뷰에 넘어가지않았다는 말씀이

    저기 저 error_page에서 안보였다는 말씀이신가요? 


  • cks
    30
    2020-09-25 11:30:39

    네 맞습니다 데이터가 안넘어가서 공백으로 보여요

  • 보후리
    155
    2020-09-25 12:00:19

    cks 그... log.error 여기서는 다 찍히시는거져?? 


    저도 초보자라서 잘 모르지만.. 


    질문1.

    ModelAttribute 는 게터 세터가 다 있는 클래스여야 들어온게 매칭이되는 구조? 인걸로 알고있는데요.. 아마  Exception 클래스가 그런 구조가 아니여서  그런거 같고요

    질문2.

    이거는그냥 서버단에서 뷰단으로 값을 넘겨주질않아서 그런거같애염

  • cks
    30
    2020-09-25 12:31:39

    네 로그는 찍혀요

    @ModelAttribute가 게터세터를 이용하는군요

    감사합니다 !

  • 로그인을 하시면 답변 을 등록할 수 있습니다.