2022_04_10 - oneso123456789/2022 GitHub Wiki
๋ชจ๋ฌ์ฐฝ์ด ์๋์ค๋ ์ค๋ฅ ๋ฐ์ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ div์ id๋ ํด๋์ค์ ๋์๋ฌธ์๊ฐ ๋ค๋ฅธ๊ฑฐ ๊ฐ์ ํ์ธ๊ฒฐ๊ณผ
<div class="modal fade" id="mymodal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
์์ id๊ฐ myModal์์ mymodal๋ก ๋๋ฌธ์๊ฐ ๋๋ฝ๋จ
<div class="modal fade" id="myModal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
์์ฒ๋ผ ๋๋ฌธ์๋ก ๋ณ๊ฒฝํ๋๋ ์ ์์ ์ผ๋ก ์๋ํจ
js๋ ์๋ํฐ๋ฅผ ์ฌ์ฉํ๋์ง ์ธ์ ๋ ๋ ํ์คํ ํ์ธํด์ผํจ
11.3.3๋ชจ๋ฌ(Modal)์ฐฝ ๋ณด์ฌ์ฃผ๊ธฐ
์ต๊ทผ ๋ธ๋ผ์ฐ์ ์์ ๊ฒฝ๊ณ ์ฐฝ(alert)
์ ๋์ฐ๋ ๋ฐฉ์๋ณด๋ค ๋ชจ๋ฌ์ฐฝ(Modal)
์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์
๋ง์ด ์ฌ์ฉํจ
BootStrap์ ๋ชจ๋ฌ์ฐฝ์ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ชฉ๋ก ํ๋ฉด์์ ํ์ํ ๋ฉ์์ง๋ฅผ
๋ณด์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด ๋ณด๊ฒ ์
์ต์ข
์ ์ธ ํํ๋ p247์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์ต์ด๋จ
๋ชจ๋ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก<div>
๋ฅผ ํ๋ฉด์ ํน์ ์์น์ ๋ณด์ฌ์ฃผ๊ณ , ๋ฐฐ๊ฒฝ์ด ๋๋ <div>
์ ๋ฐฐ๊ฒฝ์์ ์
ํ์ ์ฒ๋ฆฌํจ
๋ชจ๋ฌ์ฐฝ์ ํ์ฑํ๋ <div>
๋ฅผ ์ ํํ์ง ์๊ณ ๋ ๋ค์ ์๋์ ํ๋ฉด์ ๋ณผ ์ ์๋๋ก ๋ง๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๋๋ฐ
ํจ๊ณผ์ ์ธ ๋ฐฉ์์
๋ชจ๋ฌ์ฐฝ์ ๋ํ ์ฝ๋๋ ๋ค์ด๋ก๋ํ SBAdmin2์ pages ํด๋ ๋ด notifications.html
ํ์ผ์ ์ฐธ๊ณ ํ๋ฉด ๋จ
๋ชจ๋ฌ์ฐฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ์ฐ์ <div>
๋ฅผ ์ด์ฉํด์ ํ์ด์ง์ ์ฝ๋์ ์ถ๊ฐํด์ผํจ
list.jsp ๋ด์ <table>
ํ๊ทธ์ ์๋์ชฝ์ ๋ชจ๋ฌ์ฐฝ์ <div>
๋ฅผ ์ถ๊ฐํจ
</table><!-- tableํ๊ทธ์ ๋-->
<!-- Modal ์ถ๊ฐ -->
<div class="modal fade" id="mymodal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์์ต๋๋ค.</div>
<div class="modal-footer">
<button type="button" class="btn btn-default"
data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
<-- 2022_04_09 Modal๊ด๋ จ div๋ฅผ ๋ง๋ค๊ธด ํ์ง๋ง ์์ง ๋ชจ๋ฌ์ฐฝ์ ๋ณด์ฌ์ฃผ๋ ์์ ๋ ์ํ๊ณ ์์ค์ ๋ํ ๋๋ฒ๊น ๋ ์ํด์ ์ค๋ฅ๊ฐ ์์์ ์์ผ๋ 10์ผ์ ๊ณ ์น๋๋ก ํ๊ฒ ์ -->
๋ชจ๋ฌ์ฐฝ์ ๋ณด์ฌ์ฃผ๋ ์์ ์ jQuery๋ฅผ ์ด์ฉํด์ ์ฒ๋ฆฌํจ
<script type="text/javascript">
$(document).ready(
function() {
var result = '<c:out value="${result}"/>';
checkModal(result);
function checkModal(result) {
if (result === '') {
return;
}
if (parseInt(result) > 0) {
$(".modal-body").html(
"๊ฒ์๊ธ " + parseInt(result) + " ๋ฒ์ด ๋ฑ๋ก๋์์ต๋๋ค.");
}
$("#myModal").modal("show");
}
});
</script>
checkModal()ํจ์๋ ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ์ ๋ชจ๋ฌ์ฐฝ์ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ๋ด์ฉ์ ์์ ํ ๋ค ๋ณด์ด๋๋ก ์์ฑํจ
checkModal()์์๋ ์๋ก์ด ๊ฒ์๊ธ์ด ์์ฑ๋๋ ๊ฒฝ์ฐ RedirectAttributes๋ก ๊ฒ์๋ฌผ์ ๋ฒํธ๊ฐ ์ ์ก๋๋ฏ๋ก
์ด๋ฅผ ์ด์ฉํด์ ๋ชจ๋ฌ์ฐฝ์ ๋ด์ฉ์ ์์ ํจ
$("modal").modal('show')
๋ฅผ ํธ์ถํ๋ฉด ์์ ํ๋ฉด์ฒ๋ผ ๋ชจ๋ฌ์ฐฝ์ด ๋ณด์ด๊ฒ ๋จ
์ด์ 'board/register'
๋ฅผ ์ด์ฉํด์ ์๋ก์ด ๊ฒ์๋ฌผ์ ์์ฑํ๊ณ ๋๋ฉด ์๋์ผ๋ก 'board/list
๋ก
์ด๋ํ๋ฉด์ ๋ชจ๋ฌ์ฐฝ์ด ๋ณด์ด๊ฒ๋จ
๊ฒ์๋ฌผ์ ์์ฑ๊ณผ ๋ชฉ๋ก ํ์ด์ง๋ก ์ด๋์ด ์ ์์ ์ผ๋ก ๋์ํ๋ค๋ฉด, ๋ง์ง๋ง์ผ๋ก ๋ชฉ๋ก ํ์ด์ง ์๋จ์
๋ฒํผ์ ์ถ๊ฐํด์ ๋ฑ๋ก ์์
์ ์์ํ ์ ์๊ฒ ์ฒ๋ฆฌํด์ผํจ
์ฐ์ ์ list.jsp์ HTML๊ตฌ์กฐ๋ฅผ ์๋์ ๊ฐ์ด ์์ ํจ
<div class="panel-heading">
Board List Page
<button id='regBtn' type="button" class="btn btn-xs pull-right">Register
New Board</button>
</div>
list.jsp ํ๋จ์ jQuery๋ฅผ ์ด์ฉํ๋ ๋ถ๋ถ์์ ํด๋น ๋ฒํผ์ ํด๋ฆญํ์ ๋์ ๋์์ ์ ์ํจ
<script type="text/javascript">
$(document).ready(
function() {
var result = '<c:out value="${result}"/>';
checkModal(result);
function checkModal(result) {
if (result === '') {
return;
}
if (parseInt(result) > 0) {
$(".modal-body").html(
"๊ฒ์๊ธ " + parseInt(result) + " ๋ฒ์ด ๋ฑ๋ก๋์์ต๋๋ค.");
}
$("#myModal").modal("show");
}
$("#regBtn").on("click", function() {
self.location = "/board/register"
});
});
</script>
ํ๋ฉด์์ Register New Board
๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ฒ์๋ฌผ์ ๋ฑ๋ก ํ์ด์ง๋ก ์ด๋ ํ ์ ์์
๊ฒ์๋ฌผ์ ๋ฑ๋ก๊ณผ ๋ฆฌ์คํธ ์ฒ๋ฆฌ๊ฐ ๋๋ฌ๋ค๋ฉด ๊ฐ์ฅ ์ค์ํ ํ์ ์์ฑ๋์๋ค๊ณ ๋ณผ ์ ์์
๋ค์์ผ๋ก๋ ๋ชฉ๋ก ํ์ด์ง์์ ๋งํฌ๋ฅผ ํตํด์ GET ๋ฐฉ์์ผ๋ก ํน์ ํ ๋ฒํธ์ ๊ฒ์๋ฌผ์
์กฐํํ ์ ์๋ ๊ธฐ๋ฅ์ ์์ฑํจ
์กฐํ ํ์ด์ง๋ ์
๋ ฅ ํ์ด์ง์ ๊ฑฐ์ ์ ์ฌํ์ง๋ง ๊ฒ์๋ฌผ์ ๋ฒํธ(bno)๊ฐ ์ถ๋ ฅ๋๋ค๋ ์ ๊ณผ
๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฒ๋ฆฌ๋๋ค๋ ์ ์ด ๊ฐ์ฅ ํฐ ์ฐจ์ด์
๊ฒ์๋ฌผ์ ์กฐํ๋ BoardController์์ get()๋ฉ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ ####com.crow.controller.BoardControllerํด๋์ค์ ์ผ๋ถ
@GetMapping("/get")
public void get(@RequestParam("bno") Long bno, Model model) {
log.info("BoardController /get");
model.addAttribute("board", service.get(bno));
}
views/board ํด๋ ๋ด get.jsp๋ฅผ register.jsp๋ฅผ ๋ณต์ฌํด์ ์์ฑํจ
get.jsp๋ ๊ฒ์๋ฌผ์ ๋ฒํธ๋ฅผ ๋ณด์ฌ์ค ์ ์๋ ํ๋๋ฅผ ์ถ๊ฐํ๊ณ , ๋ชจ๋ ๋ฐ์ดํฐ๋ readonly๋ฅผ ์ง์ ํด์ ์์ฑํจ
register.jsp์ ์๋
๋์ ๋ง์ง๋ง์ ์์ /์ญ์ ํ์ด์ง๋ก ์ด๋ํ๊ฑฐ๋ ์๋์ ๋ชฉ๋ก ํ์ด์ง๋ก ์ด๋ํ๋ ๋ฒํผ์ ์ถ๊ฐํจ
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">Board Read Page</div>
<!-- /.panel-heading -->
<div class="panel-body">
<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 }" />' readonly="readonly">
</div>
<div class="form-group">
<label>Text area</label>
<textarea class="form-control" rows="3" name='content'
readonly="readonly"><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>
<button data-oper='modify' class="btn btn-default">
<a href="/board/modify?bno=<c:out value="${board.bno}"/>">Modify</a>
</button>
<button data-oper='list' class="btn btn-info">
<a href="/board/list">List</a>
</button>
</div>
<!-- end panel-body -->
</div>
<!-- end panel-body -->
</div>
<!-- end panel -->
</div>
<!-- /.row -->
<%@ include file="../includes/footer.jsp"%>
๋ธ๋ผ์ฐ์ ์์๋ /board/get?bno=1
๊ณผ ๊ฐ์ด ๊ฒ์๋ฌผ์ ๋ฒํธ๋ฅผ ๋ฐ๋์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํด์ค์ผํจ
ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ bno ๊ฐ์ด ์กด์ฌํ๋ค๋ฉด ์๋์ ๊ฐ์ ํ์ด์ง๋ฅผ ๋ณด๊ฒ๋จ(p253์ฐธ๊ณ )
ํ๋ฉด ํ๋จ์ ๋ฒํผ์ /board/list or /board/modify?bno=xx
์ ๊ฐ์ด ์ด๋ํ๋ ๋งํฌ๋ฅผ aํ๊ทธ๋ฅผ ์ด์ฉํด์ ์ถ๊ฐํด์ค
<button data-oper='modify' class="btn btn-default">
<a href="/board/modify?bno=<c:out value="${board.bno}"/>">Modify</a>
</button>
<button data-oper='list' class="btn btn-info">
<a href="/board/list">List</a>
</button>
254p 11.4.2 ์ ๊น์ง ํจ