본문 바로가기
DEV Heart

[MVC2 게시판 만들기 ] Alert 추가 중 발생한 문제들 해결하기

by 로띠 2021. 9. 14.

 

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