일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- HTTP
- 동적쿼리
- C#크롤링
- c:forEach
- fullcalendar
- jQuery
- 콜백
- JavaScript
- 쿼리
- MySQL
- egov
- c:choose
- react
- mybatis
- iBATIS
- JSTL
- Callback
- RequestMethod.POST
- MVC
- SQL
- node.js
- NPM
- 국제화
- android
- Java
- 서드파티모듈
- Spring
- vscode
- jsx
- AndroidStudio
- Today
- Total
Today Yewon Learned
[JSP] Java Controller에서 JSP로 Msg(문자열) newline(\r\n, \n)처리하기, escapeXml 본문
[JSP] Java Controller에서 JSP로 Msg(문자열) newline(\r\n, \n)처리하기, escapeXml
데브워니 2022. 8. 10. 15:19index.jsp
onclick="alert_msg('등록된 기기가 없습니다. \n장비를 연결하신 후 콘텐츠를 선택해 주세요.');"
javascript
function alert_msg(obj) {
var data = "msg="+obj;
comm_layer_open1("./msg.do", data);
}
onclick함수에서 alert_msg를 이용하여 개행을 하였지만, 화면단에는 개행이 되지 않는 문제점이 발생하였다.
[해결 방법]
Controller.java
@Controller
public class MsgController {
@RequestMapping(value = "msg.do", method = RequestMethod.POST)
public String index(ModelMap model, HttpServletRequest request) throws Exception {
model.addAttribute("msg", request.getParameter("msg").replaceAll("\\r?\\n", "<br/>"));
return "msg/index";
}
}
model.addAttribute로 전달받는 "msg"를 replaceAll을 이용해 치환하였다.
replaceAll("\\r?\\n", "<br/>"); //넘겨 받는 문자열의 \r\n 또는 \n에 대해 <br/>로 치환
즉, view단에서 전달한 msg 메세지는,
등록된 장비가 없습니다. \n장비를 연결하신 후 콘텐츠를 선택해 주세요.
등록된 장비가 없습니다. <br/>장비를 연결하신 후 콘텐츠를 선택해 주세요. 로 치환되는 것이다.
* repalceAll() - String replaceAll(String regex, String replacement)
- replaceAll() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수이다.
- 첫번째 매개변수는 변환하고자 하는 대상이 될 문자열
- 두번째 매개변수는 변환할 문자 값
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<c:out value="${msg}" escapeXml="false"></c:out>
전달 받은 값을 <c:out>을 통해 출력하면, 개행이 완료 된 상태로 출력된다.
이때, escapeXml="false"를 명시해주지 않거나, ture로 설정할 경우, 출력 문자열에 포함된 HTML 특수 문자 (예:<,>,&,' 또는 ")는 해당되는 문제 인티티 코드로 변환되고, JSP 페이지에서 생성된 HTML에 그대로 표시된다.
즉, escapeXml="false"를 명시하지 않을 경우,
등록된 장비가 없습니다. <br/>장비를 연결하신 후 콘텐츠를 선택해 주세요. 가 그대로 출력되는 현상이 나타나니 주의해야한다.
[결과 화면]
[참조]
https://velog.io/@jeon3029/jsp-jstl-newlinern-n-%EC%B2%98%EB%A6%AC-%EB%B0%A9%EB%B2%95
jsp, jstl newline(\r\n, \n) 처리 방법
jsp newline 처리
velog.io
https://needjarvis.tistory.com/51
[JSTL] Tag가 jsp 화면에 그대로 노출될 경우, escapeXml
스프링으로 웹을 구현하는 경우, jsp 출력은 십중팔구 JSTL을 사용할 것이다. JSTL로 로직을 구현하는 경우도 존재하지만, 왠만해서는 자바에서 비즈니스 로직을 구현하여 페이지에 전송하게 되는
needjarvis.tistory.com
'JSP & HTML & CSS' 카테고리의 다른 글
[CSS] 브라우저 스타일 초기화 (reset.css cdn) (0) | 2024.01.15 |
---|---|
[HTML] 다중 파일 업로드 태그 (0) | 2023.05.15 |
[CSS] CSS에 폰트 적용하기 (Feat. ttf 폰트 파일) (0) | 2022.04.08 |
[JSP] JSTL <c:choose> 실습 (0) | 2022.01.06 |
[JSP] JSTL <c:forEach>와 <c:if> 실습 (0) | 2021.12.17 |