
게시판 main 페이지에서 작성글의 제목을 선택하면 해당 작성글을 볼 수 있도록 구현하겠다.
우선 작성글 제목을 누르면 연결되는 링크에 board_info_idx와 content_idx를 넣어 어떤 글인지 알 수 있도록 하자.
<td><a href='${root }board/read?board_info_idx=${board_info_idx}&content_idx=${obj.content_idx}'>${obj.content_subject }</a></td>
그후 board controller에서 board/read에서 @RequestParam을 통해 두 변수를 전달받자.
boardMapper에서 select문을 통해 게시글에서 보여줘야할 정보들을 받아온다.
@Select("select U.user_nickname as content_writer_name, " +
" to_char(C.content_date, 'YYYY-MM-DD') as content_date, " +
" C.content_subject, C.content_text, C.content_file " +
"from content_table C, user_table U " +
"where C.content_writer_idx = U.user_idx " +
" and C.content_idx = #{content_idx}")
ContentBean getContent(int content_idx);
마찬가지로 contentBean에 정보를 모두 저장해서 반환한다.
boardDao, boardService를 구현한 후 controller에서 model로 전달한다.
@GetMapping("/board/read")
public String read(@RequestParam("board_info_idx") int board_info_idx,
@RequestParam("content_idx") int content_idx,
Model model) {
model.addAttribute("board_info_idx", board_info_idx);
ContentBean contentBean = boardService.getContent(content_idx);
model.addAttribute("contentBean",contentBean);
return "board/read";
}
board의 read.jsp에서 전달한 정보를 모두 출력하자.
<div class="form-group">
<label for="board_writer_nickname">작성자</label>
<input type="text" id="board_writer_name" name="board_writer_name" class="form-control" value="${contentBean.content_writer_name }" disabled="disabled"/>
</div>
<div class="form-group">
<label for="board_date">작성날짜</label>
<input type="text" id="board_date" name="board_date" class="form-control" value="${contentBean.content_date }" disabled="disabled"/>
</div>
<div class="form-group">
<label for="board_subject">제목</label>
<input type="text" id="board_subject" name="board_subject" class="form-control" value="${contentBean.content_subject }" disabled="disabled"/>
</div>
<div class="form-group">
<label for="board_content">내용</label>
<textarea id="board_content" name="board_content" class="form-control" rows="10" style="resize:none" disabled="disabled">${contentBean.content_text }</textarea>
</div>
<c:if test="${contentBean.content_file != null }">
<div class="form-group">
<label for="board_file">첨부 이미지</label>
<img src="${root }upload/${contentBean.content_file}" width="100%"/>
</div>
</c:if>
<div class="form-group">
<div class="text-right">
<a href="${root }board/main?board_info_idx=${board_info_idx}" class="btn btn-primary">목록보기</a>
<a href="${root }board/update" class="btn btn-info">수정하기</a>
<a href="${root }board/delete" class="btn btn-danger">삭제하기</a>
</div>
</div>
그리고 이미지는 파일이 있는 경우에만 출력하도록 c:if 태그를 활용한다.
다음으로는 글을 작성하자마자 작성한 글을 읽도록 처리하겠다.
board controller에서 글을 작성할 때 쓴 addContentInfo의 mapper를 수정한다.
SelectKey를 통해 content_seq를 미리 실행하고 index를 int로 반환해서 content_idx라는 값에 저장한다.
@SelectKey(statement = "select content_seq.nextval from dual", keyProperty = "content_idx", before=true, resultType=int.class)
@Insert("insert into content_table(content_idx, content_subject, content_text, " +
"content_file, content_writer_idx, content_board_idx, content_date) " +
"values (#{content_idx}, #{content_subject}, #{content_text}, #{content_file, jdbcType=VARCHAR}, " +
"#{content_writer_idx}, #{content_board_idx}, sysdate)")
void addContentInfo(ContentBean createContentBean);
이값이 createContentBean에 저장되고, modelAttribute를 통해 전달되므로,
create_success.jsp의 링크를 아래와 같이 수정한다.
location.href = "${root}board/read?board_info_idx=${createContentBean.content_board_idx}&content_idx=${createContentBean.content_idx}"
그러면 그 후로는 작성하자마자 작성한 글로 연결이 된다.

글을 모두 작성한 후 작성하기를 누르면 아래와 같이 바로 작성한 글 보기로 연결되는 것을 알 수 있다.

'프로젝트 > 게시판미니프로젝트' 카테고리의 다른 글
[프로젝트] 글 수정하기 (0) | 2020.05.12 |
---|---|
[프로젝트] 글 수정 - 작성 권한 처리 (0) | 2020.05.12 |
[프로젝트] 게시판 글 목록 구현 (0) | 2020.05.12 |
[프로젝트] 게시글 작성하기 (0) | 2020.05.11 |
[프로젝트] 회원 정보 수정 (0) | 2020.05.08 |