본문 바로가기

java

Jakarta String Tag Library

SpringexceptionResolver 이용해서 예외처리를 하였다. 그럼 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는 안해줘도 된다.