프론트에서 보낸 요청이 적절한 엔드포인트롤 타고 Controller의 메소드와 연결되는 과정에 문제가 발생하거나 예상했던 것과 다른 결과가 나올 경우 원인을 찾기 힘들 때가 많다. 200 응답을 받았는데도 실제로는 아예 목표 엔드포인트를 타지 않거나 오류 메시지조차 제대로 출력되지 않는 경우가 있기 때문이다. 다음은 내가 문제의 원인을 탐색하는 일반적인 순서이다.
프론트에서 정상적인 주소를 호출했는지 확인
Run/Debug Configurations > Deployment 탭 > Application context:
에 /
외에 별도로 설정된 경로가 있으면 도메인 주소 뒤에 해당 경로를 붙여주어야 한다.Controller Method의 Annotation을 제대로 붙였는지 확인
프론트에서 넘겨받은 parameter/payload가 매핑될 자바 객체 필드의 자료형 확인
view name을 string 형식으로 반환할 경우 해당 view 이름과 경로를 올바르게 작성했는지 점검한다
spring.mvc.view.suffix
나 UrlBasedViewResolver
등지에 제대로 view resolver 관련 설정이 되어있지 않아 문제가 발생하는 것일수도 있다.<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="2"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"
p:viewClass="org.springframework.web.servlet.view.JstlView"/>
예 02)spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
프론트에서 넘겨받은 parameter/payload가 매핑될 자바 객체 필드의 Validation annotation 확인(사용할 시)
org.hibernate.validator.constraints.@NotEmpty
사용 시 오류 메시지 출력 없이 엔드포인트를 제대로 타지 않는 문제가 있어 javax.validation.constraints.@NotNull
로 바꿔주니 정상적으로 동작했다다. @NotEmpty나 @NotBlank는 값의 길이를 체크하는데, Integer와 같은 타입은 길이가 없기 때문에 사용할 수 없기 때문이라고 한다.