에러
게시글 삭제 처리(테이블 수정) 후 redirect 과정에서 발생한 에러
발생 원인
// jsp 코드
$("#btnDelete").click(function(e) {
e.preventDefault();
const val = confirm("게시글을 삭제하시겠습니까?");
if (val == true) {
$.ajax({
"type" : "patch",
"url" : "/userboard/delete/${userBoardVo.bno}",
"success" : function(rdata) {
location.href = rdata;
}
});
}
});
// java 코드
@ResponseBody
@RequestMapping(value = "/delete/{bno}", method = RequestMethod.PATCH)
public String deleteArticle(@PathVariable int bno) {
// delete_yn = 'Y'로 처리(update)
userBoardService.deleteArticle(bno);
return "redirect:/userboard/list";
}
게시글 삭제처리를 하는 과정에서 테이블 수정이 이루어진 후
forward가 아닌 redirect로 처리하려 했는데 위와 같은 에러 발생.
검색해 보니 보안상의 이유로 인한 메커니즘이나
user agent가 임의로 변경된 환경을 지원하지 않아 발생한다고 하는데
나의 경우 코드를 다시 잘 들여다보니 아주 간단한 문제였다.
비동기방식으로 url 주소값을 리턴하고, jsp에서 그 주소값으로 페이지 이동을 하는 구조인데
redirect가 들어가면서 페이지 이동 처리가 불가능했던 것.
해결
@ResponseBody
@RequestMapping(value = "/delete/{bno}", method = RequestMethod.PATCH)
public String deleteArticle(@PathVariable int bno) {
// delete_yn = 'Y'로 처리(update)
userBoardService.deleteArticle(bno);
return "/userboard/list";
}
redirect를 지우니 원활한 페이지 이동이 가능해졌다.
수없이 발생하는 에러는 높은 확률로 사소한 부분의 수정으로 해결된다는 걸 또다시 느꼈다..