728x90

게시판 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}"

그러면 그 후로는 작성하자마자 작성한 글로 연결이 된다.

 

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

728x90

+ Recent posts