게시판 그룹 쓰기/수정은 게시판 새 글 쓰기/수정과 동일하다.
사용자가 입력한 값을 받아서
새 번호(그룹 - bgno)를 부여하고 INSERT 문을 실행하거나
그룹 번호가 있으면 UPDATE문으로 수정하면 된다.
다만, 댓글처럼 Ajax로 처리하기 때문에
JavaScript가 많이 사용된다.
더욱이 HTML Radio를 사용하면서
작성해야 하는 코드가 조금 더 많아져 복잡해 보인다.
다음 코드를 보면 일반적인 Ajax 사용과 같다.
function fn_groupSave(){ |
BoardGroupList.jsp
selectedNode는 트리의 노드가 선택되면 발생하는 이벤트(onActivate)에서
선택된 노드를 가지고 있도록 한 전역변수이다.
따라서, selectedNode에 값이 있으면
게시판 그룹 수정이고(bgno 값 존재), 없으면 신규가 된다.
사용자가 노드를 선택하면
선택한 노드가 selectedNode에 지정되고
입력상자(input)의 ID가 bgno에도 값이 저장된다.
저장할 데이터를 구성하여 boardGroupSave를 호출하면
게시판과 유사한 다음 SQL문으로 저장하게 된다.
|
board9.xml
SQL문은 별도의 이름을 부여했지만
서비스(DTO)의 이름은 게시판 글쓰기/수정과 이름이 같다(insertBoard).
insertBoard에서는 게시판과 같이 그룹번호(bgno) 값이
없으면 신규 등록 (INSERT)
있으면 수정(UPDATE)을 실행한다.
public void insertBoard(BoardGroupVO param){ |
BoardGroupSvc.java
이렇게 처리한 뒤 컨드롤(boardGroupSave)에서는
Json 형태(ObjectMapper)로 저장한 그룹 정보를 반환한다(bgInfo).
신규일경우는 MyBatis가 글번호를 반환 받아서 bgInfo에 저장해서 반환한다(selectKey).
@RequestMapping(value = "/boardGroupSave") |
BoardGroupCtr.java
컨트롤이 반환한 정보(bgInfo)는
클라이언트에서 Ajax 호출시 지정된 receiveData4Save 함수에 파라메타(data)로 넘겨 진다.
선택된 노드(selectedNode)가 있거나(!==null),
선택된 노드의 수정이면(선택된 노드와 반환된 데이터의 키 값이 같으면)
선택된 노드의 제목이 수정될수 있어서 무조건 수정해준다.
IF문 처리를 해도 되지만 간단한 데이터 변경이라 무조건 하도록 했다.
function receiveData4Save(data){ |
BoardGroupList.jsp
수정이 아닌 경우
즉, 최상위 노드에 추가(선택 노드 없음, selectedNode===null)하거나
선택노드의 자식 노드를 추가할 경우
(선택노드와 반환된 데이터 키 값이 다르면, selectedNode.data.key!==data.bgno)
새로운 노드를 생성해서 추가해 준다 (addNode).
addNode함수의 내용은 다음과 같다.
dynatree의 사용법으로 별도의 설명을 하지 않으니 찾아보길 바라고
선탠된 노드($("#tree").dynatree("getActiveNode"))가 있으면
자식으로 추가하고
없으면 최상위($("#tree").dynatree("getRoot"))에 추가한다.
function addNode(nodeNo, nodeTitle){ |
BoardGroupList.jsp
'Java > 게시판 9: 멀티 & 관리' 카테고리의 다른 글
1. 멀티게시판 관리자(그룹) 준비 (2) | 2016.08.14 |
---|---|
2. 게시판 그룹 리스트 (2) | 2016.08.14 |
3. 게시판 그룹 읽기 / 삭제 (0) | 2016.08.14 |
5. 게시판 적용 (0) | 2016.08.14 |