1. 네이버 스마트에디터 github zip파일 받아온뒤 압축풀기

2. src/main/webapp 폴더하위에 smarteditor 폴더 복사

3. src 하위의 WEB-INF / jsp 폴더에 editor.jsp 생성

<%@ 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="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="smarteditor2/js/HuskyEZCreator.js" charset="utf-8"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<title>editorPage</title>
</head>
<body>
<div class="fr-box fr-basic fr-top" role="application">
	<textarea name="notice_content" id="smartEditor" style="width: 100%; min-height: 400px;">
		<c:forEach items="${documentList }" var="dl">
			<c:if test="${dl.id eq id}">
				${dl.formSrc } // react에서 문서양식번호를 전송받아 화면에 출력
			</c:if>
		</c:forEach>
	</textarea>
</div>
</body>

<script type="text/javascript">

	$("#smartEditor").hide(); //소스코드 출력안되게 막기
	
	var oEditors = [];
	
	nhn.husky.EZCreator.createInIFrame({
		oAppRef : oEditors,
		elPlaceHolder : "smartEditor", //저는 textarea의 id와 똑같이 적어줬습니다.
		sSkinURI : "smarteditor2/SmartEditor2Skin.html", //경로를 꼭 맞춰주세요!
		fCreator : "createSEditor2",
		htParams : {
			// 툴바 사용 여부 (true:사용/ false:사용하지 않음)
			bUseToolbar : true,
	
			// 입력창 크기 조절바 사용 여부 (true:사용/ false:사용하지 않음)
			bUseVerticalResizer : true,
	
			// 모드 탭(Editor | HTML | TEXT) 사용 여부 (true:사용/ false:사용하지 않음)
			bUseModeChanger : false
		},
	});
</script>
</html>

4. controller에서 jsp파일 매핑해주기

@Controller
public class EditorController {
	
	private static final Logger log = LoggerFactory.getLogger(EditorController.class);
	
	@Autowired
	private ApprovalService approvalService;
	
	@GetMapping("/editor.do")
	public String editorPage(@RequestParam("id") String id, Model model) {
		log.info("id   :   {}", id);
		
		List<DocumentVO> documentList = approvalService.getApprovalForm();
		model.addAttribute("id", id);
		model.addAttribute("documentList", documentList);
		
		return "editor";
	}

}

5. 리엑트에서 iframe 사용해서 jsp 호출

<tr>
  <th className="sTh">문서내용</th>
  <td colSpan={2} className="sTd">
    <select className="sInput" style={{ float:"right", width:"200px", marginBottom:"10px"}}>
      <option>선택</option>
    </select>
    <iframe
        title='smartEditor2'
        //문서양식번호 전송
        src={'http://localhost:8080/editor.do?id=' + form} 
        style={{width:"100%", height:"500px"}}  
        frameBorder={"0"}
    />
  </td>
</tr>

5. 결과확인

'react' 카테고리의 다른 글

Breadcrumb 만들기  (0) 2023.05.16
페이지 인쇄 구현  (0) 2023.05.16
react 전체 선택/해제 구현  (0) 2023.05.16
React hooks, jsx 문법  (0) 2023.05.15
React 사용(in VSCode)  (0) 2023.05.15

+ Recent posts