스프링 타일즈 관련 메모

스프링 타일즈 관련 메모

훗날 내가 이 글을 읽고 이해할 수 있을지 의문이지만…

조만간 오늘 일을 까먹을 것은 분명하기에 여기 기록해둔다.

회사 포탈 솔루션에 한정해서 서술한다.

/*/* 패턴, 예를 들어 /aaa/bbb 같은 패턴의 경우,

구현된 뷰 리졸버 내용상, 타일즈를 거쳐서 jsp 파일로 도달하게 된다.

코드로 하면 이렇다.

ModelAndView mv = new ModelAndView(“/aaa/bbb”);

참고로 ModelAndView 객체 생성자의 인자값은 viewName 이다.

컨트롤러에서 해당 ModelAndView 를 리턴하게 되면,

뷰 리졸버가 타일즈를 거쳐 jsp로 도달하게 만든다.

그런데 viewName 이 .jstl 또는 .json 으로 끝날 경우 타일즈를 거치지 않는 것이 아닌가.

예를 들어 “/aaa/bbb.jstl” 또는 “/aaa/bbb.json” 은 타일즈를 거치지 않고 jsp에 도달한다.

이런저런 시도를 해보니 구현된 뷰 리졸버가 3가지였다.

타일즈를 쓰는 일반적인 뷰 리졸버 하나,

jstl용 뷰 리졸버,

json용 뷰 리졸버 이렇게 3가지였다.

일단 스프링이 ModelAndView 의 viewName 을 이용해 뷰 리졸버 매핑을 시도하는데,

/*/* 패턴은 마침표(.)를 매핑하지 못하는 것 같다.

예를 들어 “/aaa/bbb.ccc”라고 viewName을 쓰면

어떤 리졸버에도 매핑되지 못하여 서버 에러인 500 에러가 발생한다.

“/aaa/bbb” 라고 쓰면 일반적인 뷰 리졸버에 매핑되고,

“/aaa/bbb.jstl” 이라고 쓰면 jstl용 뷰 리졸버에 매핑되고,

“/aaa/bbb.json” 이라고 쓰면 json용 뷰 리졸버에 매핑된다.

“/aaa/bbb.ccc” 라고 쓰면 500 에러가 발생한다.

찾아보니 xml 파일과 properties 파일에 뷰 리졸버 관련 설정이 들어있었다.

application 어쩌고 context 저쩌고라는 이름의 properties 파일에 jstl, json 등 확장자에 따른 설정이 들어있었고,

어떤 xml 파일에도 관련 설정이 들어있었다.

자세한 설정 방법은 프로젝트 내에서 문자열 “jstlView” 또는 “jsonView” 를 *.properties 와 *.xml 파일들을 대상으로 검색해보면 알 수 있다.

끝.