diff --git a/data/dataxml/uac.service.board.qna_DELETE.xml b/data/dataxml/uac.service.board.qna_DELETE.xml
new file mode 100644
index 00000000..7065f35c
--- /dev/null
+++ b/data/dataxml/uac.service.board.qna_DELETE.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ 10
+
+
diff --git a/src/main/java/nlib/bbs/service/impl/BoardDAO.java b/src/main/java/nlib/bbs/service/impl/BoardDAO.java
index 31b4aa27..19550c74 100644
--- a/src/main/java/nlib/bbs/service/impl/BoardDAO.java
+++ b/src/main/java/nlib/bbs/service/impl/BoardDAO.java
@@ -58,7 +58,8 @@ public class BoardDAO extends DataApi
}
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
- return null;
+ reqVO.setReqUrl(RESOURCE_URI);
+ return delete(reqVO);
}
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
diff --git a/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java b/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
index a339bcdf..1d827304 100644
--- a/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
+++ b/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
@@ -59,7 +59,7 @@ public class BoardServiceImpl implements BoardService
}
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
- return null;
+ return boardDAO.deleteQnA(reqVO);
}
diff --git a/src/main/java/nlib/bbs/web/BoardController.java b/src/main/java/nlib/bbs/web/BoardController.java
index f48f69d8..e288ec97 100644
--- a/src/main/java/nlib/bbs/web/BoardController.java
+++ b/src/main/java/nlib/bbs/web/BoardController.java
@@ -100,10 +100,12 @@ public class BoardController extends NlibCommonController
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
+ String message = paramMap.get("message");
log.debug("listQnAs > pageIndex = " + pageIndex);
log.debug("listQnAs > pageSize = " + pageSize);
log.debug("listQnAs > searchKeyword = " + searchKeyword);
+ log.debug("listQnAs > message = " + message);
// 페이징 사이즈 코드 목록 조회
DataApiReqVO reqVOforPageSize = new DataApiReqVO();
@@ -117,6 +119,7 @@ public class BoardController extends NlibCommonController
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
model.addAttribute("pageSizeCodes", resVOforPageSize.getList());
+ model.addAttribute("message" , message);
return "nlib/board/listQnAs";
}
@@ -262,7 +265,7 @@ public class BoardController extends NlibCommonController
return "redirect:/board/insertQnAForm.do";
}
- return "redirect:nlib/board/listQnAs";
+ return "redirect:/board/listQnAs.do";
}
@RequestMapping("/board/verifyWriter.do")
@@ -405,26 +408,99 @@ public class BoardController extends NlibCommonController
// 처리결과 확인
if(!updateResVO.isSuccess()) {
message = updateResVO.getResultMessage();
- addParamsToModel(paramMap, model);
+ model.addAttribute("message", message);
+ addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword,articleNo");
+ addParamsToModel(paramMap, model, "article"
+ , "articleNo,articleType,"
+ + "articleTypeName,title,articlePassword,readCount,"
+ + "regDate, reguserName, repStats, "
+ + "email, contentQeust, "
+ + "contentQuestFile");
+
return "redirect:/board/updateQnAForm.do";
}
// 반환 정보
model.addAttribute("articleNo" , updateResVO.getInfoItem("articleNo")); // 신규등록된 게시물 ID
- model.addAttribute("article" , resVO.getInfo());
- model.addAttribute("message" , "성공적으로 수정처리되었습니다.");
+ model.addAttribute("message" , "성공적으로 수정되었습니다.");
// 검색 정보
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
- return "redirect:nlib/board/selectQnA";
+ return "redirect:/board/selectQnA.do";
}
@RequestMapping("/board/deleteQnA.do")
- public String deleteQnA(HttpServletRequest req) {
- return "nlib/board/deleteQnA";
+ public String deleteQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) {
+
+ String message = null;
+
+ // 목록 이동시 전달할 매개변수
+ String searchKeyword = paramMap.get("searchKeyword");
+ String pageIndex = paramMap.get("pageIndex");
+ String pageSize = paramMap.get("pageSize");
+
+ // 게시물 번호
+ String articleNo = paramMap.get("articleNo");
+ String articlePassword = paramMap.get("articlePassword");
+
+ log.debug("deleteQnA > pageIndex = " + pageIndex);
+ log.debug("deleteQnA > pageSize = " + pageSize);
+ log.debug("deleteQnA > searchKeyword = " + searchKeyword);
+ log.debug("deleteQnA > articleNo = " + articleNo);
+ log.debug("deleteQnA > articlePassword = " + articlePassword);
+
+ if(StringUtil.isEmpty(articlePassword)) {
+ model.addAttribute("message", "비밀빈호가 올바르지 않습니다.(D1)");
+ return "redirect:/board/selectQnA.do";
+ }
+
+ //-------------------------------
+ // REQ VO 구성
+ //-------------------------------
+ DataApiReqVO reqVO = new DataApiReqVO();
+ reqVO.setAuthKey(createAuthKey(req, authentication));
+ reqVO.setPageIndex(pageIndex);
+ reqVO.setPageSize(pageSize);
+ reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
+ reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
+
+ // 요청
+ DataApiResVO resVO = boardService.selectQnA(reqVO);
+
+ // 비밀번호 확인
+ HashMap article = resVO.getInfo();
+ String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword);
+ log.debug("updateQnAForm > 입력받은 비밀번호를 SHA256 암호화한 값 : " + shaArticlePassword);
+
+ if(!shaArticlePassword.equals(article.get("articlePassword"))) {
+ model.addAttribute("message", "비밀번호가 올바르지 않습니다.(D2)");
+ return "redirect:/board/selectQnA.do";
+ }
+
+ // 삭제 처리
+ DataApiResVO delResVO = boardService.deleteQnA(reqVO);
+
+ // 처리결과 확인
+ if(!delResVO.isSuccess()) {
+ message = delResVO.getResultMessage();
+ model.addAttribute("message", message);
+ addParamsToModel(paramMap, model, null, "pageIndex,pageSize,searchKeyword,articleNo");
+
+ return "redirect:/board/selectQnA.do";
+ }
+
+ // 반환 정보
+ model.addAttribute("message" , "성공적으로 삭제되었습니다.");
+
+ // 검색 정보
+ model.addAttribute("pageIndex" , pageIndex);
+ model.addAttribute("pageSize" , pageSize);
+ model.addAttribute("searchKeyword", searchKeyword);
+
+ return "redirect:/board/listQnAs.do";
}
}
\ No newline at end of file
diff --git a/src/main/java/nlib/cmm/NlibCommonController.java b/src/main/java/nlib/cmm/NlibCommonController.java
index c8de86f0..89909936 100644
--- a/src/main/java/nlib/cmm/NlibCommonController.java
+++ b/src/main/java/nlib/cmm/NlibCommonController.java
@@ -183,13 +183,31 @@ public class NlibCommonController {
}
public ModelMap addParamsToModel(Map paramMap, ModelMap model, String upperMapName, String itemNames) {
+
if(paramMap == null || paramMap.size() < 1) return model;
if(model == null) return model;
+ String filter = null;
+ if(StringUtil.isNotEmpty(itemNames)) {
+ filter = "," + itemNames + ",";
+ filter = filter.replaceAll(" ", "");
+ }
+
boolean existUpperMap = StringUtil.isNotEmpty(upperMapName);
- Map uppperMap = new HashMap();
+ Map uppperMap = null;
+ if(existUpperMap) uppperMap = new HashMap();
+
for(String key : paramMap.keySet()) {
- model.addAttribute(key, paramMap.get(key));
+
+ if(filter != null && !filter.contains("," + key + ",")) {
+ continue;
+ }
+ if(existUpperMap) {
+ uppperMap.put(key, paramMap.get(key));
+ } else {
+ model.addAttribute(key, paramMap.get(key));
+ }
+
}
return model;
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/board/listQnAs.jsp b/src/main/webapp/WEB-INF/jsp/nlib/board/listQnAs.jsp
index 0992f3f7..2e6a34bc 100644
--- a/src/main/webapp/WEB-INF/jsp/nlib/board/listQnAs.jsp
+++ b/src/main/webapp/WEB-INF/jsp/nlib/board/listQnAs.jsp
@@ -161,6 +161,8 @@ function fn_searchArticle(pageSize, pageIndex) {
${pageTitle }
+메시지 : ${message}
+
-
-
-
-