Scenario: 게시판을 만들고나서 이제 글내용을 불러와보니 엔터등 <br> 인식이 안되는 치명적인 현상이 있엇다.
db에서 불러올때 엔터를 <br>로 인식하게 하는 util은 쉽게 가져올수 있엇는데,
<%= utils.getContent(String)%> 이런식으로 써야했다. 나는 db에서 Content를 불러올때 ${dto.content} 이런식으로 불러오는데
아무리 짱구를 굴려봐도 <%= utils.getContent( ${dto.content} )%> 이런식으로 쓸 수 가 없었다.
그래서 custom el function을 만들기로 했다 (처음엔 1시간이면 만들줄 알았지....)
solution: (아래)
1.먼저 Util파일을 만든다 (이 유틸은 디비에서 글을 불러올때 엔터를 <br>로 대입해주는 유틸이다)
주의점: 만약 bean을 사용하면 메소드를 static으로 선언해줄 필요가 없지만, 우리는 custom el funtion을 만들어야 하기때문에 무조건 static으로 만들어야한다
ContentForm.java
- public class ContentForm {
- public static String getContent(String comment) {
- return br(" ", "<br>", comment);
- }
- public static String br(String first, String brTag, String comment) {
- StringBuffer buffer = new StringBuffer();
- StringTokenizer st = new StringTokenizer(comment, "\n");
- int count = st.countTokens();
- buffer.append(first);
- int i = 1;
- while (st.hasMoreTokens()) {
- if (i == count) {
- buffer.append(st.nextToken());
- } else {
- buffer.append(st.nextToken() + brTag);
- }
- i++;
- }
- return buffer.toString();
- }
- }
2.tld 파일을 만들어준다
el-funtion.tld
- <?xml version="1.0" encoding="UTF-8" ?>
- <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
- version="2.0">
- <description>CommonUtil functions library</description>
- <display-name>CommonUtil functions</display-name>
- <tlib-version>1.1</tlib-version>
- <short-name>mobizaUtil</short-name>
- <uri>tld/el-funtion.tld</uri>
- <function>
- <description>글내용 엔터 등, 줄바꿈 인식하게하기</description>
- <name>getContent</name>
- <function-class>경로.ContentForm</function-class>
- <function-signature>java.lang.String getContent(java.lang.String)</function-signature>
- </function>
- </taglib>
3. web.xml에 uri와 tld 파일 경로를 맵핑시켜준다 (생략가능)
web.xml
- <!-- Custom UL TAG을 쓰기위함이다 -->
- <jsp-config>
- <taglib>
- <taglib-uri>
- tld/el-funtion.tld
- </taglib-uri>
- <taglib-location>
- {프로젝트상 실제경로}/el-function.tld
- </taglib-location>
- </taglib>
- </jsp-config>
4.jsp 페이지 내에서 사용예
만약 web.xml에서 맵핑을 하지 않는다면
<%@ taglib uri="WEB-INF/tld/el-funtion.tld" prefix="moutil" %>
이런식으로 실제 파일이 위치한 경로를 맵핑시켜주어도 무방하다.
ex.jsp
- <%@ taglib uri="tld/el-funtion.tld" prefix="moutil" %>
- <body>
- 내용:${moutil:getContent(dto.bContent) }
- <body>
'To be Developer > WEB' 카테고리의 다른 글
[HTML, jQuery] 동적으로 생성된 태그에는 live로 이벤트 바인드하기 (1) | 2017.04.05 |
---|---|
[펌]이미지 업로드 후 view 할 때 (0) | 2017.03.29 |
[Jquery, Ajax] 이미지 클릭시 파일첨부 하고 디비 넣기 + 첨부이미지 미리보기 기능 (0) | 2017.03.27 |
[Jquery, Ajax] 로그인 기능을 Ajax로 만들어서 좋았던점 (0) | 2017.03.24 |
[AJAX, JSON] Servlet 에서 Ajax를 써서 동적으로 리플 불러오기 (0) | 2017.03.24 |