MVC2 게시판 프로젝트 중 글쓰기를 완료하였을 때
"게시물 작성이 완료되었습니다!"
같은 메세지가 필요해 보여서 Alert를 추가하기로 했는데 문제가 발생했다!!
문제1.
추가한 자바스크립트 Alert만 뜨고 RequestDispatcher가 실행이 안되거나
반대로 Dispatcher만 실행되고 Alert가 뜨지않는 상황 발생
=> Alert는 버퍼에 저장되었을 뿐 클라이언트에게 전달되지 않은 상황이고
아래 코드 경우 즉시 클라이언트를 Dispatcher(list)로 이동하게 하기 때문에 영영 출력되지 않는다,,,,,
(response.sendRedirect도 마찬가지ㅜㅜ)
instance.insertArticle(article); // insertArticle() 로 게시물을 추가한 후
// 게시물 작성 완료 메세지창 출력
PrintWriter out = response.getWriter();
out.println("<script type=\"text/javascript\"> ");
out.println("alert('게시물 작성이 완료되었습니다.');");
out.println("</script> ");
out.close();
}catch (Exception e) {
e.printStackTrace();
}
String pageNum = request.getParameter("pageNum");
RequestDispatcher dispatcher = request.getRequestDispatcher("newBoard?type=list&pageNum=" + pageNum);
dispatcher.forward(request, response);
break;
}
문제2.
문제1번에서 Dispatcher를 받지 못하니
페이지 이동 또한 JavaScript로 걸어 보았다 [ "location.href='newboard?type=list;"); ]
작동은 하지만 Request를 아예 받지 못해서 결과적으로 사용하긴 어려웠다...
instance.insertArticle(article); // insertArticle() 로 게시물을 추가한 후
// 게시물 작성 완료 메세지창 출력
PrintWriter out = response.getWriter();
out.println("<script type=\"text/javascript\"> ");
out.println("alert('게시물 작성이 완료되었습니다.');");
out.println("location.href='newboard?type=list'");
out.println("</script> ");
out.close();
}catch (Exception e) {
e.printStackTrace();
}
break;
}
문제3.
흠! 그럼 controller.java가 아닌 writeForm.jsp에서 걸어주면 어떨까?
submit 버튼에 [ onClick="alert('게시물 작성이 완료되었습니다.');" ] 를 추가 하였으나
유효성 체크가 되지않아 fail
아무글도 입력하지 않고 Submit을 눌러도 완료되었다고 뜬다..
실제 게시물은 유효성체크에 걸려 작성되지않았기 때문에 사용불가다
<button type="submit" class="btn" onClick="alert('게시물 작성이 완료되었습니다.');">
Submit
</button>
해결!!!
문제3을 통해 유효성 검사를 모두 통과하면 되잖아? 라는 결론 도출
유효성 검사 함수 writeSave()에서 모든 if문을 뚫고 왔을 때
[ alert("게시물 작성이 완료되었습니다.") ] 가 뜨도록 맨 아래 추가!!
function writeSave(){
var writeform = document.writeform;
if(!writeform.writer.value){
alert("작성자를 입력하십시요.");
writeform.writer.focus();
return false;
}
if(!writeform.subject.value){
alert("제목을 입력하십시요.");
writeform.subject.focus();
return false;
}
if(!writeform.content.value){
alert("내용을 입력하십시요.");
writeform.content.focus();
return false;
}
alert("게시물 작성이 완료되었습니다.")
}
성~공~
Alert 는 공부하면서 정말 쉬운 것이라고 생각하고 있었는데 막상 사용하려니 예상치 못했던 상황들이 발생했다
Dispatcher, Request 등 과의 관계, 유효성 검사와의 순서 등... 여러 사항들을 고려해야 한다는 걸 알게됐다
사실 엄청 간단한 문제였지만 겪어보기전까진 몰랐다;
그리고 1,2,3try보다 해결한게 더 쉬워서 허무했지만 ㅋㅋㅋㅋ 오히려 다행일지 모른다
오늘은 4try만에 해결해서 기뿌댱^^ㅎㅎ
'DEV Heart' 카테고리의 다른 글
| URL Mapping (0) | 2021.10.06 |
|---|---|
| [Java] enum class 상수선언 (0) | 2021.09.27 |
| JAVA 예약어 [ this ] (0) | 2021.09.13 |
| [ MVC 1 게시판 ] #3 상세 내용 보기(content) (0) | 2021.09.08 |
| [ MVC 1 게시판 ] #2 리스트 출력하기 (List) (0) | 2021.09.08 |