2022_04_14 - oneso123456789/2022 GitHub Wiki
๋ค๋ก๊ฐ๊ธฐ์ ๋ชจ๋ฌ์ฐฝ ๋จ๋ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋์ค list.jsp์ scriptํ๊ทธ ์์ฑ์ค ๋ฐ์
history.state๋ฅผ ์ฌ์ฉํด์ผํ๋๋ history.State๋ฅผ ์ฌ์ฉํด์ ์๋์ด ์๋จ
๊ทธ๋ฅ s๋ฅผ ๋ค์ ์๋ฌธ์๋ก ๋ณ๊ฒฝํจ
Java Script์ ๋ํ ๋ ์์ธํ ๊ณต๋ถ๊ฐ ํ์ํ๋ค๊ณ ์๊ฐ๋จ TnT
์ด ๋ถ๋ถ์์ 2๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์
form์ ๋ง๋ค๋ method๋ฅผ post๊ฐ ์๋ get์ผ๋ก ๋ง๋ค์ด์ ๊ฒ์๊ธ์ ๋ด์ฉ์ ๋ณ๊ฒฝํํ modify๋ฒํผ์ ํด๋ฆญํด๋
๋ด์ฉ์ด ๋ฐ๋์ง ์์์ form์ ๋์ method๋ฅผ post๋ก ๋ณ๊ฒฝํด์ ํด๊ฒฐํจ
<form role="form" action="/board/modify" method="get"> -> <form role="form" action="/board/modify" method="post">
form์ด๋ ๋ฒํผ์ ๋์์ํฌ๋ ์๋ง์ method ์ฌ์ฉํด์ผํจ
1๋ฒ์ ํด๊ฒฐํ ํ remove ํ
์คํธ์ค ๋ฐ์ํ ์ค๋ฅ์
remove ๋ก์ง์ ๋์๊ฐ์ง๋ง ๋จ์ํ redirect ๊ฒฝ๋ก๊ฐ ์ด์ํ๊ฒ์ด ๋ฌธ์ ๊ฐ๋จ(/WEB-INF/views//redirect:/board/list.jsp)
ํด๊ฒฐํ ๋ฐฉ๋ฒ์ BoardController.class์
PostMapping์ remove()๋ฉ์๋์ ๋ฆฌํด๊ฐ์ /
๊ฐ ํฌํจ๋์ด์ /WEB-INF/views//redirect:
์ด๋ฐ ๊ฒฝ๋ก๋ก ์ค์ ๋๊ฒ ๋ฌธ์ ์์
return "/redirect:/board/list"; -> return "redirect:/board/list";
๋ณ๊ฒฝํ ํด๊ฒฐํจ
๋๊ฐ ๋ชจ๋ ๊ทธ๋ ๊ฒ ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋์์ ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํค์ง ์๋๊ฒ ์ ์ผ ์ข์๋ฐฉ๋ฒ์ด์ง๋ง
๊ทธ๋ด์์์ผ๋ ์ต๋ํ ์ ํํ๊ฒ ํด๊ฒฐํ๋ ๋ฅ๋ ฅ์ ๊ธธ๋ฌ์ผ ํ๋ค๊ณ ์๊ฐ๋จ
๋์ผํ ํ์ด์ง ๋ด์์ ๋ชฉ๋ก ํ์ด์ง์ ์กฐํ ํ์ด์ง์ ์ด๋์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋ ๊ฒ ๊ฐ์๋ณด์ด์ง๋ง
ํ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋จ์ ์์ ๋ฑ๋ก -> ๋ชฉ๋ก -> ์กฐํ
๊น์ง๋ ์์กฐ๋กญ์ง๋ง ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก๊ฐ๊ธฐ
๋ฅผ
์ ํํ๋ ์๊ฐ ๋ค์ ๊ฒ์๋ฌผ์ ๋ฑ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ ๋ชจ๋ฌ์ด ๋์ํ๋ค๋๊ฒ์
๋ฌธ์ ํํ๊ทธ๋ฆผ(p256)์ฐธ๊ณ
์ด๋ฌํ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ์์ธ์ ๋ธ๋ผ์ฐ์ ์์ ๋ค๋ก ๊ฐ๊ธฐ
๋ ์์ผ๋ก ๊ฐ๊ธฐ
๋ฅผ ํ๋ฉด ์๋ฒ๋ฅผ ๋ค์ ํธ์ถํ๋ ๊ฒ ์๋๋ผ
๊ณผ๊ฑฐ์ ์์ ์ด ๊ฐ์ง ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ๊ธฐ ๋๋ฌธ์
๋ธ๋ผ์ฐ์ ์์ ์กฐํ ํ์ด์ง์ ๋ชฉ๋ก ํ์ด์ง๋ฅผ ์ฌ๋ฌ ๋ฒ ์์ผ๋ก ํน์ ๋ค๋ก ์ด๋ํด๋ ์๋ฒ์์๋ ์ฒ์์ ํธ์ถ์ ์ ์ธํ๊ณ
๋ณ๋ค๋ฅธ ๋ณํ๊ฐ ์๋ ๊ฒ์ ํ์ธํ ์ ์์
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด windows์ history ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ํ์ฌ ํ์ด์ง๋ ๋ชจ๋ฌ์ฐฝ์ ๋์ธ ํ์๊ฐ ์๋ค๊ณ
ํ์๋ฅผ ํด ๋๋ ๋ฐฉ์์ ์ด์ฉํด์ผ ํจ
Windows์ history ๊ฐ์ฒด๋ฅผ ์คํ ๊ตฌ์กฐ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ์๋ ๊ทธ๋ฆผ์ผ๋ก ์๋ฆฌ๋ฅผ ์ดํด๋ณด๊ฒ ์
(p256 ์ค๊ฐ ๊ทธ๋ฆผ)
๊ทธ๋ฆผ1์ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๊ณ '/board/list'๋ฅผ ์ต์ด๋ก ํธ์ถํ ๊ฒ์
history์ ์์ผ๋ฉด์ ํ์ฌ ํ์ด์ง๋ ๋ชจ๋ฌ์ฐฝ์ ๋ณด์ฌ์ค ํ์๊ฐ ์๋ค๊ณ ํ์(๊ทธ๋ฆผ์์ ์์์์)
๊ทธ๋ฆผ2๋ ์ฌ์ฉ์๊ฐ /board/register
๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ์
์คํ์ ์๋จ์ /board/register
๊ฐ ์์ ๋ง์ผ ์ด ์ํ์์ ๋ค๋ก ๊ฐ๊ธฐ
๋ฅผ ์คํํ๋ฉด ์๋์ชฝ์ /board/list
๊ฐ ๋ณด์ฌ์ง๋๋ฐ
์ด๋ ์ฌ์ด๋ ํ์๋ฅผ ์ด์ฉํด์ ๋ชจ๋ฌ์ฐฝ์ ๋์ธ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ํ์ธ ํ ์ ์์
๊ทธ๋ฆผ 3์ ์ฌ์ฉ์๊ฐ ๋ฑ๋ก์ ์๋ฃํ๊ณ /board/list
๊ฐ ํธ์ถ๋๋ ์ํฉ์
๋ธ๋ผ์ฐ์ ์์ ์์ผ๋ก ๊ฐ๊ธฐ
๋๋ค๋ก๊ฐ๊ธฐ
๋ก ์ด๋ํ ๊ฒ์ด ์๋๋ฏ๋ก ์คํ์ ์๋จ์ ์ถ๊ฐ๋จ
๋ฑ๋ก ์งํ์ /board/list
๋ก ์ด๋ํ ๊ฒฝ์ฐ์๋ ๋ชจ๋ฌ์ฐฝ์ด ๋์ํจ
๊ทธ๋ฆผ 3์์ ๋ชจ๋ฌ์ฐฝ์ ๋ณด์ฌ์ค ํ์๋ ์คํ์ ์๋จ์ ๋ชจ๋ฌ์ฐฝ์ด ํ์ํ์ง ์๋ค๋ ํ์๋ฅผ ํด ์ฃผ์ด์ผ ํจ
์ด์ฐ์/board/regisger
๋ฅผ ํธ์ถํ๋ฉด ๊ทธ๋ฆผ 4์ ๊ฐ์ด ๋จ
windows.history ๊ฐ์ฒด๋ฅผ ์กฐ์ํ๋ ๊ฒ์ ์ด๋ก ์ผ๋ก๋ ๋ณต์กํด ๋ณด์ด์ง๋ง,
์ฌ์ค์ ์ฝ๋๋ ์๋์ ๊ฐ์ด ์ฝ๊ฐ์ ๋ณํ๋ง ์์๋ฟ์
<script type="text/javascript">
$(document).ready(
function() {
var result = '<c:out value="${result}"/>';
checkModal(result);
history.replaceState({}, null, null);
function checkModal(result) {
if (result === '' || history.state) {
return;
}
if (parseInt(result) > 0) {
$(".modal-body").html(
"๊ฒ์๊ธ " + parseInt(result) + " ๋ฒ์ด ๋ฑ๋ก๋์์ต๋๋ค.");
}
$("#myModal").modal("show");
}
$("#regBtn").on("click", function() {
self.location = "/board/register"
});
});
</script>
๊ธฐ์กด๊ณผ ๋ฌ๋ผ์ง ์ ์ ๋งจ ๋ง์ง๋ง์ ์ถ๊ฐ๋ history.replaceState()
๋ถ๋ถ๊ณผ checkModal()
์์
history.state
๋ฅผ ์ฒดํฌํ๋ ๋ถ๋ถ์
JavaScript์ ์ฒ๋ฆฌ๋ ์ฐ์ checkModal()
์ ์คํํ๋๋ฐ, ๋ง์ผ ๋ฑ๋ก๋ ํ์ ์ด๋ํ ๊ฒ์ด๋ผ๋ฉด
์์ ๊ทธ๋ฆผ 3์ฒ๋ผ ๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ฌ์ฐฝ์ด ๋ณด์ด๊ฒ ๋จ
๋ชจ๋ฌ์ฐฝ์ด ๋ณด์ด๋ ์ฌ๋ถ์ ๊ด๊ณ์์ด javaScript์ ๋ชจ๋ ์ฒ๋ฆฌ๊ฐ ๋๋๊ฒ ๋๋ฉด history์ ์์ด๋ ์ํ๋
๋ชจ๋ฌ์ฐฝ์ ๋ณด์ฌ์ค ํ์๊ฐ ์๋ ์ํ๊ฐ ๋จ
์ต์ข
์ ๊ฒฐ๊ณผ๋ p258๊ทธ๋ฆผ์ฒ๋ผ ์ฒ๋ฆฌ๋จ
๊ฒ์๋ฌผ์ ์์ ์์ ์ ์ผ๋ฐ์ ์ผ๋ก
- ์กฐํ ํ์ด์ง์์ ์ง์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋
- ๋ณ๋์ ์์ /์ญ์ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ ํด๋น ํ์ด์ง์์ ์์ ๊ณผ ์ญ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํจ
์ต๊ทผ์๋ ๊ฒ์๋ฌผ์ ์กฐํ ํ์ด์ง์์ ๋๊ธ ๋ฑ์ ๋ํ ์ฒ๋ฆฌ๊ฐ ๋ง์์ง๋ฉด์
์์ ๊ณผ ์ญ์ ๋ ๋ณ๊ฐ์ ํ์ด์ง์์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
์กฐํ ํ์ด์ง์์๋ GET ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ URL์ ํตํด์ ์์ /์ญ์ ๋ฒํผ์ด ์กด์ฌํ๋
ํ๋ฉด์ ๋ณผ ์ ์๊ฒ ์ ์ํด์ผ ํจ
์์ ํน์ ์ญ์ ์์
์ POST๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๊ณ , ๊ฒฐ๊ณผ๋ ๋ค์ ๋ชฉ๋ก ํ๋ฉด์์ ํ์ธํ ์ ์๋ ํํ๋ก ์ ์ํจ
BoardController์์ ์์ /์ญ์ ๊ฐ ๊ฐ๋ฅํ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ ๊ฒ์ ์กฐํ ํ์ด์ง์ ๊ฐ์
๋ฐ๋ผ์ ๊ธฐ์กด์ get() ๋ฉ์๋๋ฅผ ์กฐ๊ธ ์์ ํด์ ํ๋ฉด์ ๊ตฌ์ฑํจ
@GetMapping({"/get", "/modify"})
public void get(@RequestParam("bno") Long bno, Model model) {
log.info("BoardController /get or modify");
model.addAttribute("board", service.get(bno));
}
@GetMapping
์ด๋ @PostMapping ๋ฑ์๋ URL์ ๋ฐฐ์ด๋ก ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก,
์์ ๊ฐ์ด ํ๋์ ๋ฉ์๋๋ก ์ฌ๋ฌ URL์ ์ฒ๋ฆฌํ ์ ์์
๋ธ๋ผ์ฐ์ ์์๋ /board/modify?bno=30
๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก, views ํด๋ ๋ด modify.jsp๋ฅผ ์์ฑํจ
modify.jsp๋ get.jsp์ ๊ฐ์ง๋ง ์์ ์ด ๊ฐ๋ฅํ ์ ๋ชฉ
์ด๋ ๋ด์ฉ
๋ฑ์ด readonly ์์ฑ์ด ์๋๋ก ์์ฑํจ
POST ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ์ํด์๋
<form role="form" action="/board/modify" method="get">
<div class="form-group">
<label>Bno</label> <input class="form-control" name='bno'
value='<c:out value="${board.bno }"/>' readonly="readonly">
</div>
<div class="form-group">
<label>Title</label> <input class="form-control" name='title'
value='<c:out value="${board.title }" />'>
</div>
<div class="form-group">
<label>Text area</label>
<textarea class="form-control" rows="3" name='content'><c:out
value="${board.content }" /></textarea>
</div>
<div class="form-group">
<label>Writer</label> <input class="form-control" name='writer'
value='<c:out value="${board.writer }"/>' readonly="readonly">
</div>
<div class="form-group">
<label>RegDate</label> <input class="form-control" name='regDate'
value='<fmt:formatDate pattern="yyyy/MM/dd" value="${board.regdate }" />'
readonly="readonly">
</div>
<div class="form-group">
<label>Update Date</label> <input class="form-control"
name='updateDate'
value='<fmt:formatDate pattern="yyyy/MM/dd" value="${board.updateDate }" />'
readonly="readonly">
</div>
<button type="submit" data-oper='modify' class="btn btn-default">Modify</button>
<button type="submit" data-oper='remove' class="btn btn-danger">Remove</button>
<button type="submit" data-oper='list' class="btn btn-info">List</button>
</form>
<form>
ํ๊ทธ๋ action ์์ฑ์ /board/modify
๋ก ์ง์ ํ์ง๋ง, ์ญ์ ๋ฅผ ํ๋ฉด /board/remove
์ ๊ฐ์ด
action ์์ฑ์ ๋ด์ฉ์ ์์ ํด์ ์ฌ์ฉํ๊ฒ ๋จ
๊ฒ์๋ฌผ์ ์ ๋ชฉ, ๋ด์ฉ์ ์์ ์ด ๊ฐ๋ฅํ ํํ๋ก ์ฌ์ฉํด์ ์ฌ์ฉ์๊ฐ ํธ์งํ ์ ์๊ฒ ํจ
๋ฑ๋ก์ผ๊ณผ ์์ ์ผ์ ๋์ค์ BoardVO๋ก ์์ง๋์ด์ผ ํ๋ฏ๋ก ๋ ์ง ํฌ๋งท์ yyyy/MM/dd
์ ํฌ๋งท์ผ๋ก ํด์ผํจ
(๋ง์ผ ํฌ๋งท์ด ๋ง์ง ์์ผ๋ฉด ํ๋ผ๋ฏธํฐ ์์ง ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํจ)
๋ง์ง๋ง์๋ ์์ /์ญ์ /๋ชฉ๋ก
๋ฑ์ ๋ฒํผ์ ์ถ๊ฐํจ
๋ธ๋ผ์ฐ์ ์์๋ /board/modify?bno=52
(์กด์ฌํ๋ ๊ฒ์๋ฌผ์ ๋ฒํธ)์ ๊ฐ์ด
๊ฒ์๋ฌผ ๋ฒํธ๋ฅผ ์ด์ฉํด์ ์์ ํ์ด์ง๊ฐ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋์ง ํ์ธ
JavaScript์์๋ ์์ ๋ฒํผ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ์ข ์์ ํ ์ ์๋๋ก ์์ ํด์ผํจ
<script type="text/javascript">
$(document).ready(function() {
var formObj = $("form");
$('button').on("click", function(e) {
e.preventDefault();
var operation = $(this).data("oper");
console.log(operation);
if (operation === 'remove') {
formObj.attr("action", "/board/remove");
} else if (operation === 'list') {
// move list
self.location = "/board/list";
return;
}
formObj.submit();
});
});
</script>
JavaScript์์๋ <button>
ํ๊ทธ์ data-oper
์์ฑ์ ์ด์ฉํด์ ์ํ๋ ๊ธฐ๋ฅ์ ๋์ํ๋๋ก ์ฒ๋ฆฌํจ
<form>
ํ๊ทธ์ ๋ชจ๋ ๋ฒํผ์ ๊ธฐ๋ณธ์ ์ผ๋ก submit์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ e.preventDefault()๋ก
๊ธฐ๋ณธ๋์์ ๋ง๊ณ ๋ง์ง๋ง์ ์ง์ submit()์ ์ํํจ
2022_04_14 ์ค์ 4์ 46๋ถ ์ฌ๊ธฐ๊น์งํจ
ํ๋ฉด์์ ๊ฒ์๋ฌผ์ ์์ ํ ํ์ modify
๋ฒํผ์ ํตํด์ BoardController์ ์์ ์ ์์ฒญํจ
Modify ๋ฒํผ์ ํด๋ฆญํ๋ฉด BoardController์์๋ ์ฃผ์ด์ง ํ๋ผ๋ฏธํฐ๋ค์ BoardVO๋ก ์ฒ๋ฆฌํ๊ฒ ๋๊ณ ,
์์ ๋ ๊ฐ์ด ์ ๋๋ก ์์ง๋ ๊ฒ์ ํ์ธํ ์ ์์ (p263)
๊ฒ์๋ฌผ์ด ์์ ๋ ํ์๋ ๋ค์ /board/list
ํ๋ฉด์ผ๋ก ์ด๋ํ๊ฒ ๋จ
์ด ๊ฒฝ์ฐ์ ๋ํ ์ฒ๋ฆฌ๋ ์ด๋ฏธ ์๋ฃ๋์์ผ๋ฏ๋ก ๋ชจ๋ฌ์ฐฝ์ ํตํด์ ๋ฉ์์ง๋ฅผ ํ์ธํ ์ ์์
ํ๋ฉด์์ Remove
๋ฒํผ์ ํด๋ฆญํ๊ฒ ๋๋ฉด <form>
ํ๊ทธ์ action ๊ฐ์ด /board/remove
๊ฐ ๋๊ณ
๋ฐ์ดํฐ๋ค์ด ์ ์ก๋จ
๋ฌผ๋ก BoardController์์๋ bno ๊ฐ ํ๋๋ง ํ์ํ์ง๋ง ์ฒ๋ฆฌ์๋ ๋ฌธ์ ๊ฐ ์์
์ญ์ ์ BoardController์๋ ์๋์ ๊ฐ์ ๋ก๊ทธ๊ฐ ๊ธฐ๋ก๋๊ฒ ๋จ
๊ฒ์๋ฌผ์ ์กฐํ ํ์ด์ง์์๋ ์์ ๊ณผ ์ญ์ ๊ฐ ํ์ํ ํ์ด์ง๋ก ๋งํฌ๋ฅผ ์ฒ๋ฆฌํด์ผํจ
์ง์ ๋ฒํผ์ ๋งํฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ์์ง๋ง,
๋์ค์ ๋ค์ํ ์ํฉ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ <form>
ํ๊ทธ๋ฅผ ์ด์ฉํด์ ์์ ํจ
<button data-oper='modify' class="btn btn-default">Modify</button>
<button data-oper='list' class="btn btn-info">List</button>
<form id='operForm' action="/board/modify" method="get">
<input type='hidden' id='bno' name='bno'
value='<c:out value="${board.bno }"/>'>
</form>
๋ธ๋ผ์ฐ์ ์์๋<form>
ํ๊ทธ์ ๋ด์ฉ์ ๋ณด์ด์ง ์๊ณ ๋ฒํผ๋ง์ด ๋ณด์ด๊ฒ ๋จ
์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด operForm์ด๋ผ๋ id๋ฅผ ๊ฐ์ง <form>
ํ๊ทธ๋ฅผ ์ ์กํด์ผ ํ๋ฏ๋ก
์ถ๊ฐ์ ์ธ JavaScript ์ฒ๋ฆฌ๊ฐ ํ์ํจ
<script type="text/javascript">
$(document).ready(function() {
var operForm = $("#operForm");
$("button[data-oper='modify']").on("click", function(e) {
operForm.attr("action", "/board/modify").submit();
});
$("button[data-oper='list']").on("click", function(e) {
operForm.find("#bno").remove();
operForm.attr("action", "/board/list")
operForm.submit();
});
});
</script>
์คํฌ๋ฆฝํธ ์ฝ๋๋ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ๋๋ฅด๋ ๊ฒฝ์ฐ์๋ bno ๊ฐ์ ๊ฐ์ด ์ ๋ฌํ๊ณ <form>
ํ๊ทธ๋ฅผ submit์์ผ์ ์ฒ๋ฆฌํจ
๋ง์ผ ์ฌ์ฉ์๊ฐ list๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ์๋ ์์ง ์๋ฌด๋ฐ ๋ฐ์ดํฐ๋ ํ์ํ์ง ์์ผ๋ฏ๋ก
<form>
ํ๊ทธ ๋ด์ bno ํ๊ทธ๋ฅผ ์ง์ฐ๊ณ submit์ ํตํด์ ๋ฆฌ์คํธ ํ์ด์ง๋ก ์ด๋ํจ
์์ ํ์ด์ง์์๋ ์ฌ์ฉ์๊ฐ ๋ค์ ๋ชฉ๋ก ํ์ด์ง๋ก ์ด๋ํ ์ ์๋๋ก ํ๊ธฐ ์ํด์
JavaScript ๋ด์ฉ์ ์กฐ๊ธ ์์ ํจ
<script type="text/javascript">
$(document).ready(function() {
var formObj = $("form");
$('button').on("click", function(e) {
e.preventDefault();
var operation = $(this).data("oper");
console.log(operation);
if (operation === 'remove') {
formObj.attr("action", "/board/remove");
} else if (operation === 'list') {
// move list
formObj.attr("action", "/board/list").attr("method", "get");
formObj.empty();
}
formObj.submit();
});
});
</script>
์์ ๋ ๋ด์ฉ์ ํด๋ฆญํ ๋ฒํผ์ด List์ธ๊ฒฝ์ฐ action ์์ฑ๊ณผ method ์์ฑ์ ๋ณ๊ฒฝํจ
/board/list
๋ก์ ์ด๋์ ์๋ฌด๋ฐ ํ๋ผ๋ฏธํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ <form>
ํ๊ทธ์ ๋ชจ๋ ๋ด์ฉ์ ์ญ์ ํ ์ํ์์ submit()
์ ์งํํจ
์ดํ์ ์ฝ๋๋ ์คํ๋์ง ์๋๋ก return์ ํตํด์ ์ ์ดํจ
์ด ์ฅ์์ ์งํ๋ ๋ชจ๋ ๋ด์ฉ์ ๋์ํ ์ํค๋ฉด p267์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋จ