컨트롤러 - ReCmtController
@Controller
public class ReCmtController {
@Autowired private ReboardDao dao;
@RequestMapping(value="/re/listCmt", method={RequestMethod.GET, RequestMethod.POST})
public String listCmt(String no, ModelMap map) {
List listCmt = dao.getListCmt(no);
map.put("listCmt", listCmt);
return "reboard/listCmt";
}
@RequestMapping(value="/re/createCmt", method={RequestMethod.GET, RequestMethod.POST})
public void createCmt(ReboardDto dto, Writer writer) throws IOException {
dao.createCmt(dto);
writer.write("end");
}
@RequestMapping(value="/re/deleteCmt", method={RequestMethod.GET, RequestMethod.POST})
public void deleteCmt(ReboardDto dto, Writer writer) throws IOException {
dao.deleteCmt(dto);
writer.write("end");
}
}
View - read.jsp
<script type="text/javascript">
// 한줄댓글 입력 메소드
function doCreateCmt() {
// 한줄댓글 내용이 필수이므로 검사
if($('#cmt').val() == '') {
alert("한줄 댓글의 내용은 필수 입력입니다.");
$('#cmt').focus(); return;
}
// 버튼 중복 클릭 방지
$('#createbt').attr('disabled', 'disabled');
$.post('<%=cp%>/re/createCmt',
{cwriter:$('#cwriter').val(),
cmt:$('#cmt').val(),
no:${item.no}},
function(data){
$('#cmt').val(''); // 내용 비우기
// 다시 클릭이 가능하게끔
$('#createbt').attr("disabled", false);
// 입력이 완료가 됐으므로 다시 리스트 불러오기
cmtList();
});
}
// 한줄댓글 리스트 가져오는 메소드
function cmtList() {
$('#cmtTarget').load("<%=cp%>/re/listCmt?no=${item.no}");
}
function doDeleteCmt(cno) {
$.post('<%=cp%>/re/deleteCmt',
{"cno":cno, no:${item.no}}, function(data) {cmtList();});
}
$(function(){
// id가 cmt인 텍스트에서 엔터를 쳤을 경우
// 바로 데이터 입력이 되도록 작성
$('#cmt').keyup(function(e){
if(e.keyCode == 13) doCreateCmt();
});
// 처음 읽기 화면 들어왔을때 바로 리스트를 가져와서 보여줌
cmtList();
});
</script>
.
.
.
<body>
<div>
<div>글쓴이 : <input type="text" id="cwriter" value="${userid }" style="width: 10%" /> 댓글 : <input type="text" id="cmt" style="width: 50%" />
<input type="button" value="입력" id="createbt" onclick="doCreateCmt();" /></div>
</div>
<div id="cmtTarget"></div>
</body>
targetView - listCmt.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<% String cp = request.getContextPath(); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<c:forEach var="item" items="${listCmt }">
<div>
<div>
${item.cwriter } : ${item.cmt } [${item.cdate }]
<input type="button" value="삭제" onclick="doDeleteCmt('${item.cno}');" />
</div>
</div>
</c:forEach>
</body>
</html>
Model - ReboardDao.java
@Repository
public class ReboardDao {
@Autowired private SqlSession mapper;
public List getListCmt(String no) {
return mapper.selectList("reboard.listCmt", no);
}
public void createCmt(ReboardDto dto) {
mapper.insert("reboard.createCmt", dto);
}
public void deleteCmt(ReboardDto dto) {
mapper.delete("reboard.deleteCmt", dto);
}
}
'Dev. 스프링 > 참고소스 및 예제' 카테고리의 다른 글
페이징처리 예제 - 동적쿼리, include taglib 이용 (0) | 2012.12.03 |
---|---|
로그인/로그아웃시 현재 페이지 그대로 있기 (0) | 2012.12.03 |
Spring, Ajax, JQuery UI 를 이용한 자동 완성(Autocomplete) 텍스트 박스 만들기 (2) | 2012.10.17 |
spring AOP 활용한 Logger 이용 로그기록 남기기 (0) | 2012.10.16 |
스프링(Spring) 에서 첨부파일 다운로드 위한 세팅 및 예제 소스코드 (0) | 2012.10.09 |