관리자에게만 삭제 버튼이 표시된다.

<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
복사했습니다!