프로젝트를 진행하던 도중 다음과 같은 505 에러가 발생하였습니다.
에러 코드
The function size must be used with a prefix when a default namespace is not specified
(기본 네임스페이스를 지정하지 않았을 때는 펑션 사이즈는 반드시 접두사와 사용되어야 합니다.)
문제는 구버전 톰캣 문제이며 톰캣에서 제공하는 JSP/Servlet 버전이 낮기 때문에 .size() 기능을 인식하지 못하기 때문에 에러를 표현해 내는 것입니다.
흔히 이런 문제는 톰캣 7.0 환경에서 개발하고 6.0버전의 서버에 릴리즈 했을 때 격는 에러 현상중 하나입니다.(제가 그랬습니다.)
더욱이 404에러 페이지 이동까지 적용한다면 로그가 찍히지 않고 그냥 에러페이지로 이동하기 때문에 해결하기가 더욱 어렵습니다.
위와 같이 낮은 버전의 Servlet에서는 size()명령어는 에러를 발생하게 됩니다.
해결 방법
1. 톰캣을 7.0 이상으로 세팅하여 프로젝트를 실행한다.
2. <%@ taglib uri=”http://java.sun.com/jsp/jstl/functions” prefix=”fn” %> 를 JSP 상단에 선언 후 변수.size() 를 fn:length(변수) 로 변환하여 사용한다.
다음과 같이 변경하여 페이지가 정상적으로 출력되었습니다.
The function size must be used with a prefix when a default namespace is not specified
에러가 발생하시는 분들은 위와 같이 문제를 해결해 보시기 바랍니다.