Spring의 exceptionResolver 이용해서 예외처리를 하였다. 그럼 resolver에 의해 지정된 jsp가 호출되는데 그 jsp안에서 ${exceptionMessage.message} 이렇게 에러 정보를 표시할 수가 있다. 근데 문자값에 있는 캐리지리턴 \r, 라인피드 \n값을 <br/>태크로 표현할려고 하니 잘 안되었다.
인터넷 검색을 해본결과
JSTL function을 이용하면 된다는 것을 알수 있었다.
Function의 간단한 설명은 http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSTL8.html#wp84687를 참조하면 된다.
다음은 중요한 부분의 소스들이다.
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<jsp:scriptlet>
pageContext.setAttribute("crlf", "\r\n");
pageContext.setAttribute("lf", "\n");
pageContext.setAttribute("cr", "\r");
</jsp:scriptlet>
${fn:replace(exceptionMessage.message, lf, "<br/>")}
exceptionMessage.message의 문자열은 라인피드값만 들어 있는 것 같아 위처럼 처리된것이다.
위 방법 말고 다른방법은 Jakarta String Tag Library(http://jakarta.apache.org/taglibs/doc/string-doc/intro.html)를 이용하면 된다.
다음은 String Tag Library를 이용할때의 중요한 소스이다.
<%@ taglib prefix="str" uri="http://jakarta.apache.org/taglibs/string-1.1"%>
<str:replace replace="NL" with="<br/>" newlineToken="NL">${exceptionMessage.message}</str:replace>
String Tag Library에 있는 replace 태그의 설명은 http://jakarta.apache.org/taglibs/doc/string-doc/string-1.1.0/index.html#replace에 가면 찾을수 있다.
String Tag Library 웹페이지의 문서를 보면 Commons Lang(http://commons.apache.org/lang/index.html)에 대해 의존성을 가지고 있음으로 Library를 등록할때는 taglibs-string.jar와 함께 commons-lang-2.3.jar도 같이 등록해야 한다.
또 문서에는 descriptor파일 복사한 후 web.xml에 <taglib> element로 정의해라고 하는데 servlet spec 2.2/2.3 는 몰라도 내가 지금 사용하고 있는 2.4는 안해줘도 된다.
'java' 카테고리의 다른 글
ClassLoader를 이용한 서버 종류 알아내기 (1) | 2008.03.19 |
---|---|
Tomcat과 JEUS에서의 EL (0) | 2008.01.22 |
현재 프로젝트의 자바 라이브러리 정리.. (0) | 2007.09.14 |
jasper report용 servlet (0) | 2007.07.05 |
JSP 표현식 언어(EL) 종합 (0) | 2007.06.19 |