오류노트
Tiles.xml 설정 주의 사항
YEOM-JI
2024. 11. 9. 11:54
Request processing failed; nested exception is org.apache.tiles.request.render.CannotRenderException:
교본을 따라 작성했던 내가 발생했던 오류는 아니지만 동기분의 오류를 같이 해결하다가 발견한 것.
위 오류는 Tiles에서 해당 요청을 처리할 수 없을 경우 무수한 에러를 만들어내며 파일이 깨지는 경험을 할 수 있다. 해당 오류가 발생하는 원인으로는 다음 세가지의 문제를 꼽을 수 있는데...
1. 템플릿 경로 이상 : 지정된 템플릿 파일이 존재하지 않거나 잘못된 경로를 사용
2. 설정 이상 : Tiles.xml파일 등과 같이 정의 파일의 내용이 잘못됨
3. 의존성 문제 : 필요 라이브러리 혹은 의존성이 누락되거나 호환이 안됨
이 중에서 이번 에러는 2번, 설정 이상인 것 같다.
<definition name="books" extends="base_Template">
<put-attribute name="title" value="Books"></put-attribute>
<put-attribute name="heading" value="도서 목록"></put-attribute>
<put-attribute name="subheading" value="Books List"></put-attribute>
<put-attribute name="content" value="/WEB-INF/views/books.jsp"></put-attribute>
</definition>
위는 스프링에서 Tiles를 설정하는 xml파일의 일부이다. 원하는 파일에 필요한 정보를 바꾸는 것으로, 사실 에러가 발생 할 부분이 없지만 의외로...? subheading부분의 value값을 definition name 부분의 value값과 똑같이 적어주게 되면 console창에서 무수히 많은 에러가 치솟는 것을 볼 수 있을 것이다...
<definition name="addBook" extends="base_Template">
<put-attribute name="title" value="Books"></put-attribute>
<put-attribute name="heading" value="도서 등록"></put-attribute>
<put-attribute name="subheading" value="addBook"></put-attribute>
<put-attribute name="content" value="/WEB-INF/views/addBook.jsp"></put-attribute>
</definition>
에러가 난 부분은 이렇게 작성되어 있었고, 여기서 subheading부분의 값을 addBook이 아닌 다른 값으로 교체하자 정상적으로 작동되는 것을 확인할 수 있었다.
<put-attribute name="subheading" value="Book Addition"></put-attribute>
<!-- 해당 Value값을 수정 -->