스프링 부트 CKEditor
스프링 부트 CKEditor 19 - 오류 사항 및 플러그인 관련 설명
https://youtu.be/92RoFOQX4B4?si=XVL-Tj3CXp-DVdYH
스프링 부트 CKEditor 19 - 오류 사항 및 플러그인 관련 설명
- 스프링 부트 CKEditor 19 - 오류 사항 및 플러그인 관련 설명
- 1. 게시글 저장 시 WhiteLabel Error 발생
- 2. 원인
- 3. 해결 방법
- 4. 왜 LONGTEXT를 추천할까?
- 5. CKEditor 높이 조절 시 발생하는 문제
- 6. 문제점
- 7. 실제 문제 예시
- 8. 올바른 해결 방법
- 9. 왜 min-height를 사용할까?
- 10. 게시글 줄바꿈 문제
- 11. 원인
- 12. 해결 방법
- 13. 이미지 크기 조절 기능 추가
- 14. 해결 방법
- 15. 주의사항
- 16. Custom Build 방식 추천 이유
- 17. 소스 코드 편집 기능 추가
- 18. 활용 예시
- 19. Plugin 추가 방법
- 20. 실무에서 많이 사용하는 플러그인
- 21. Premium 플러그인 주의
- 22. 무료 플러그인만 사용하는 방법
- 23. 실무에서 가장 중요한 포인트
- 24. 실무에서 추가로 꼭 해야 하는 작업
- 25. HTML Sanitizing 예시
- 26. 이미지 업로드 용량 제한
- 27. CKEditor에서 Base64 업로드 비추천
- 28. 추천 구조
- 29. 이번 글 핵심 정리
- 마무리
Spring Boot CKEditor 5 사용 시 자주 발생하는 오류 및 해결 방법 정리
CKEditor 5를 Spring Boot 프로젝트에 연동하다 보면 생각보다 다양한 오류를 만나게 된다.
특히:
- 게시글 저장 시 WhiteLabel Error
- 에디터 높이 조절 시 이미지 깨짐
- 줄바꿈 문제
- 이미지 크기 조절 문제
- HTML 소스 편집 문제
등은 실제로 가장 많이 발생하는 이슈들이다.
이번 글에서는 CKEditor 5를 사용하면서 자주 발생하는 문제와 해결 방법을 정리해본다.
1. 게시글 저장 시 WhiteLabel Error 발생
가장 많이 발생하는 오류 중 하나다.
증상
게시글 작성 후 저장 버튼 클릭 시:
Whitelabel Error Page
발생
또는:
Data too long for column
오류 발생
2. 원인
대부분 원인은:
DB 컬럼 크기 부족
이다.
문제 상황 예시
content VARCHAR(255)
로 설정된 경우
CKEditor는 HTML 태그까지 저장한다.
예시:
<h1>안녕하세요</h1>
<p>내용입니다</p>
<img src="...">
즉 실제 저장 문자열 길이가 매우 길어진다.
3. 해결 방법
VARCHAR → LONGTEXT 변경
ALTER TABLE contents
MODIFY content LONGTEXT;
추천 타입
| 타입 | 용도 |
|---|---|
| VARCHAR | 짧은 문자열 |
| TEXT | 일반 게시글 |
| LONGTEXT | CKEditor HTML 저장 |
4. 왜 LONGTEXT를 추천할까?
CKEditor는:
- HTML
- 이미지 태그
- 스타일
- 테이블
- 링크
등이 모두 포함된다.
따라서 실제 데이터 크기가 매우 커진다.
실무에서는 거의 대부분:
LONGTEXT
사용
5. CKEditor 높이 조절 시 발생하는 문제
많이 하는 실수 중 하나다.
일반적인 높이 조절 방식
.ck-editor__editable {
height: 500px;
}
6. 문제점
이 방식은:
에디터 내부 이미지까지 height 영향을 받는다
즉:
- 이미지 크기 깨짐
- 테이블 레이아웃 깨짐
- 비율 깨짐
발생 가능
7. 실제 문제 예시
원래:
200px 이미지
였는데
CSS 영향으로:
450px
로 늘어나는 문제 발생
8. 올바른 해결 방법
NOT 선택자 활용
.ck-editor__editable:not(.ck-comment__input *) {
min-height: 500px;
}
또는:
.ck-editor__editable_inline {
min-height: 500px;
}
사용 권장
9. 왜 min-height를 사용할까?
height
는 강제 고정
반면:
min-height
는:
최소 높이만 보장
하므로
내부 이미지나 테이블에 영향이 훨씬 적다.
10. 게시글 줄바꿈 문제
증상
브라우저 폭이 줄어들 때:
자동 줄바꿈이 안됨
결과:
- 가로 스크롤 발생
- 레이아웃 깨짐
11. 원인
CKEditor HTML 내부의:
긴 문자열
긴 URL
코드 블럭
등이 줄바꿈되지 않음
12. 해결 방법
CSS 적용
.content-area {
word-break: break-all;
overflow-wrap: break-word;
}
추천 설정
.content-area {
overflow-wrap: anywhere;
}
최신 브라우저에서 매우 안정적
13. 이미지 크기 조절 기능 추가
CKEditor 기본 상태에서는:
이미지 크기 조절 기능 없음
14. 해결 방법
Image Resize Plugin 추가
CKEditor Custom Build에서:
Image Resize
플러그인 추가
15. 주의사항
이 기능은:
다운로드 방식 CKEditor
에서만 가능
CDN 방식 제한
CDN 방식은:
플러그인 추가 어려움
존재
16. Custom Build 방식 추천 이유
실무에서는 대부분:
Custom Build
사용
이유:
- 원하는 플러그인 추가 가능
- 최적화 가능
- 번들 크기 감소
- 커스터마이징 가능
17. 소스 코드 편집 기능 추가
개발 블로그나 기술 게시판에서는 매우 중요하다.
Source Editing Plugin
추가 시:
HTML 직접 수정 가능
18. 활용 예시
- HTML 직접 편집
- iframe 삽입
- custom style 추가
- syntax highlight
- embed 코드 추가
19. Plugin 추가 방법
CKEditor Custom Build 사이트에서:
Source Editing
검색 후 추가
20. 실무에서 많이 사용하는 플러그인
추천 플러그인 목록
| 플러그인 | 용도 |
|---|---|
| Image Resize | 이미지 크기 조절 |
| Source Editing | HTML 직접 수정 |
| Table | 표 삽입 |
| Media Embed | 유튜브 삽입 |
| Code Block | 코드 블럭 |
| Highlight | 하이라이트 |
| Autoformat | 자동 포맷 |
21. Premium 플러그인 주의
CKEditor에는:
Premium
표시 플러그인 존재
의미
유료 플러그인
예시:
- 협업 기능
- 댓글 기능
- Track Changes
- AI 기능
22. 무료 플러그인만 사용하는 방법
Custom Build 생성 시:
Premium 체크 제외
하면 무료 구성 가능
23. 실무에서 가장 중요한 포인트
CKEditor는 단순 에디터가 아니다.
사실상:
HTML 생성기
에 가깝다.
따라서:
- DB 타입
- CSS 영향
- HTML 렌더링
- XSS
- 이미지 처리
모두 고려해야 한다.
24. 실무에서 추가로 꼭 해야 하는 작업
1) XSS 방어
사용자가:
<script>
삽입 가능
해결 방법
- Jsoup Sanitizer
- OWASP Sanitizer
사용 권장
25. HTML Sanitizing 예시
String safeHtml =
Jsoup.clean(
html,
Safelist.basicWithImages()
);
26. 이미지 업로드 용량 제한
필수 설정
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
27. CKEditor에서 Base64 업로드 비추천
일부 설정에서는:
이미지를 Base64로 HTML에 직접 저장
가능
하지만:
- DB 급격히 증가
- 성능 저하
- HTML 크기 폭증
문제로 인해
실무에서는:
S3 URL 저장 방식
사용
28. 추천 구조
실무 권장 구조:
CKEditor
↓
Spring Boot
↓
S3 업로드
↓
이미지 URL 저장
29. 이번 글 핵심 정리
WhiteLabel Error 원인
VARCHAR 크기 부족
→ LONGTEXT 변경
높이 조절 문제
height
직접 사용 주의
→ min-height 권장
이미지 깨짐 방지
editable 전체 height 강제 지정 금지
줄바꿈 문제
overflow-wrap
활용
이미지 리사이즈
Image Resize Plugin 추가
HTML 직접 수정
Source Editing Plugin 활용
마무리
CKEditor 5는 단순한 텍스트 에디터가 아니라 거의 하나의 작은 CMS 수준의 기능을 제공한다.
따라서:
- DB 설계
- CSS 구조
- 보안
- 파일 업로드
- HTML 렌더링
전체를 함께 고려해야 안정적인 서비스를 만들 수 있다.
특히 실무에서는:
에디터 자체보다
"에디터가 생성하는 HTML"
을 어떻게 안전하게 저장하고 렌더링할지가 핵심이다.