게시판에서 글을 수정, 삭제 등등 할 때...
어떻게 하면 1페이지가 아니라(그냥 list URL이 아니라)
전에 보던 페이지로 돌아갈 수 있을까????
일단 URL이 변경되는 과정을 그려보았다
가정1)
read(읽기)에서 request 받은 URI를 모델에 저장해서, 컨트롤러에서 모델에 담은 객체 이용
->모델에 담은 객체는 컨트롤러에서 사용이 안 되는 듯? 실패...
*정정함 이게 정답이었음^^^!!!!!!!!!
가정2)
read(읽기)에서 request 받은 URI을 String에 저장하여, 하드코딩...
->
이상하게 자꾸 지금 URI가 뜸...애초에 저런 형식을 원한 것도 아니었음^^;실패
그러던 중...
referer에 대해서 떠올렸다!!
이전 url을 알 수 있게 해주는 마법~
아하!!
referer로 이전 url을 알아내고 그걸 저장한 뒤...
다시 referer에 저장했던 url을 가져와서 그걸 호출하면?! 가능할 거 같다!!!
(두둥)
시도해보자!
일단 referer 값을 jsp에 input type을 text로 저장해서! 진짜 값이 가져와지는지 확인해보자!
<input type="text" name="referer" value="${referer}">
결과는?
그러면 이 Referer에 fromURL 이라는 이름을 붙이고
모델에 저장하자~
@GetMapping("/read")
public String read(Integer bno,Integer page, Integer pageSize, Model m,HttpServletRequest request) {
String fromURL = "";
try {
BoardDto boardDto = boardService.read(bno);
// m.addAttribute("boardDto",boardDto); //아래 문장과 동일
m.addAttribute(boardDto);
m.addAttribute("page", page);
m.addAttribute("pageSize", pageSize);
//Referer:request받은 URL을 String fromURL에 삽입
fromURL = request.getHeader("Referer");
//모델에 저장!
m.addAttribute("fromURL",fromURL);
} catch (Exception e) {
e.printStackTrace();
}
return "board";
}
그 다음엔?
수정 창으로 가게 해주는 메서드에
fromURL을 매개변수로 받은 뒤,
redirect를 해주면 됨!
@PostMapping("/modify")
public String modify(BoardDto boardDto,Model m, HttpSession session, RedirectAttributes rattr,String fromURL) {
String writer = (String)session.getAttribute("id");
boardDto.setWriter(writer);
try {
int rowCnt = boardService.modify(boardDto);
if(rowCnt==0)
throw new Exception("Modify failed");
rattr.addFlashAttribute("msg","Modify OK");
//fromURL null체크하기
fromURL = fromURL==null || fromURL.equals("") ? "/board/list" : fromURL;
return "redirect:"+fromURL;
} catch (Exception e) {
e.printStackTrace();
m.addAttribute(boardDto);
m.addAttribute("msg","Modify_ERR");
return "board";
}
}
그럼 결과는??
(감격주의..)
9페이지에서
137번 게시물을 111로 수정해보았당~
수정을 완료해도 다시 수정 게시글이 있는 페이지로 돌아와진다!
같은 방법으로
삭제 후 전 페이지로 돌아가는 것도 간단히 수정했다>.<
spring mvc를 이해하고 있으면 정말 쉬운 문제였던 거 같은데
이해를 덜해서(사실 못해서)
진짜 싸맸다...ㅎㅎ
request.getHeader("Referer") 을 찾았는데도
모델에 넣고 그걸 다시 가져오는 작업을 이해를 못해서
몇시간동안 정말 힘들었고 이거저거 다 시도해보았다 ㅠㅠ
그래도 누구 도움 없이 혼자 풀어내서 정말 뿌듯하다!!
이래서 물어보지 말고 혼자 해결해보라고 하는 거구나...!!
'혼자서 개발새발' 카테고리의 다른 글
Spring) 3편:ajax와 button으로 회원 가입 기능을 완성하다!! (0) | 2022.11.15 |
---|---|
Spring) 1편 : ajax로 DTO 받아서 회원가입 만들고 싶었던 사람... (0) | 2022.11.11 |
JAVA,Oracle) 오라클과 자바를 연동해서 행을 추가, 수정, 삭제 해보자! (0) | 2022.10.25 |
JAVA) 멀티쓰레드를 이용해 영화관에서 티켓을 팔자! (0) | 2022.10.20 |
JAVA) 전교 등수를 계산해보자!! (1) | 2022.10.15 |