
관리자에게만 삭제 버튼이 표시된다.
<c:if test="${sessionScope.loginUser.adminOk eq 'Y' }">
<c:url var="aupdate" value="mvupdaten.do">
<c:param name="noticeNo" value='${notice.noticeNo}'/>
<c:param name="page" value='${currentPage }' />
</c:url>
<a href='${aupdate }'>수정</a>
<c:url var="adelete" value="deleten.do">
<c:param name="page" value='${currentPage}' />
<c:param name="noticeNo" value='${notice.noticeNo }' />
</c:url>
<a href=${adelete}>삭제</a>
</c:if>
삭제버튼 클릭시 글번호와 함께 삭제요청을 한다.
@RequestMapping("deleten.do")
public String noticeDeleteMethod(@RequestParam("noticeNo") int noticeNo,
@RequestParam("page") String page, Model model) {
int currentPage = 1;
if(page!=null&&page.length()>0) {
currentPage=Integer.parseInt(page);
}
if(noticeService.deleteNotice(noticeNo)>0) {
model.addAttribute("currentPage", page);
return "redirect:nlist.do";
}{
model.addAttribute("message", "공지사항 삭제 실패!");
return "common/error";}
}
삭제 성공시 목록으로 이동하고
실패 시 실패 메세지 출력
매퍼는 별거없다.
#mapper
<delete id="deleteNotice" parameterType="_int">
delete tb_notice where notice_no=#{noticeNo}
</delete>
----공지사항 삽입
관리자에게만 글쓰기 버튼 표시
placeholder로 안내문구 표시
#vew
<body>
<c:import url="/WEB-INF/views/common/header.jsp" />
<div class="main-container" style="padding-top:100px;">
<div class='container'>
<hr>
<form id='writeForm' action="nwrite.do" method="POST">
<input class="title-input" type="text" name="noticeTitle"
maxlegth="44" placeholder="제목을 입력해주세요 최대 44글자" required>
<hr>
<textarea class="contentbox" name="noticeContent" rows="20" cols="20"
maxlength="254" placeholder="내용을 입력해주세요 최대 254글자" required></textarea>
<hr>
<input type='hidden' name="writer"
value="${sessionScope.loginUser.id }"> <input type='hidden'
name="page" value="${page}">
<hr>
<P>중요도</P>
<label style="width: 100px;"><input type="radio"
name="importancy" value=1 checked>1</label> <label
style="width: 100px;"><input type="radio" name="importancy"
value=2>2</label> <label style="width: 100px;"><input
type="radio" name="importancy" value=3>3</label> <br>
</form>
<a onclick="submitForm()" class="mv">글쓰기</a> <a
href="${pageContext.servletContext.contextPath}/${lb}" class="mv">돌아가기</a>
<c:url var="lb" value="nlist.do">
<c:param name="page" value="${page}" />
</c:url>
<script>
function submitForm() {
document.getElementById("writeForm").submit();
}
</script>
<c:url var="lb" value="nlist.do">
<c:param name="page" value="${page}" />
</c:url>
</div>
</div>
<br>
<hr>
<c:import url="/WEB-INF/views/common/footer.jsp" />
</body>
작성자는 input type=hidden으로 숨겨놨다가 전송할때 같이보낸다
#controller
@RequestMapping(value="nwrite.do", method=RequestMethod.POST)
public String noticeWriteMethod(Model model, Notice notice,@RequestParam(name = "page", required = false) String page ) {
logger.info(notice.toString());
if(noticeService.insertNotice(notice)>0) {
//게시글 등록 성공시 방금 작성한 글로 이동
int noticeNo = noticeService.selectMostResentNoticeNo(Integer.parseInt(notice.getWriter()));
model.addAttribute("nno", noticeNo);
return "redirect:ndetail.do";
}else {
model.addAttribute("message", "공지사항 등록 실패");
return "common/error";
}
}
게시글 삽입이 성공하면
제일 최신글의 글번호를 조회해와서 해당 글번호를 들고 상세보기 요청을 보낸다 .
그러면 해당 관리자가 쓴 가장 최근 글, 즉 방금 작성완료한 글 페이지로 이동한다.
오랜만에 다시보니 뭔가 구린거같다.
근데 글번호가 시퀀스라서 어쩔수 없었던거 같기도하고 ..
#mapper 가장 최근글 조회
<select id="selectMostResentNoticeNo" parameterType="_int" resultType="_int">
select max(notice_no) from tb_notice where writer=#{id}
</select>
#mapper insert
<insert id="insertNotice" parameterType="Notice" >
insert into tb_notice values(notice_seq.NEXTVAL,${writer},#{noticeTitle},#{noticeContent},
sysdate,sysdate,0,#{importancy})
</insert>
'프로젝트 > 1차프로젝트' 카테고리의 다른 글
불편사항 - 댓글 (0) | 2024.05.23 |
---|---|
불편사항 - ajax로 글 상태 변경하기 (0) | 2024.05.23 |
공지사항 - 수정 (0) | 2024.05.23 |
공지사항 배너 (0) | 2024.05.23 |
공지사항 리스트 조회 및 검색 (0) | 2024.05.20 |