Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

게으른 완벽주의자의 개발자 도전기

[board] 게시글 등록하기 (session 데이터, validation 처리) 본문

Spring Boot

[board] 게시글 등록하기 (session 데이터, validation 처리)

머리방울 2022. 9. 19. 20:22

로그인 한 회원에게만 글쓰기 버튼이 보이도록 설정하고 게시글 작성 후 등록하기

 

 로그인 한 유저만 보이는 글쓰기 버튼 클릭
<div class="row" text-center>
	
<th:block th:if="${session.loginInfo != null}">
	<button type="button" class="btn btn-outline-info" th:onclick="|location.href='@{/board/writeBoard}'|">글쓰기</button>	
</th:block>
	
</div>


controller

글쓰기 
@GetMapping("/writeBoard")
public String writeBoard(BoardVO boardVO) {
		
	return "content/reg_board";
}

 

1. mapper / service

<insert id="regBoard">
INSERT INTO BOARD (
			BOARD_NUM
			, TITLE
			, CONTENT
			, MEMBER_ID
			
	) VALUES( 
			(SELECT NVL(MAX(BOARD_NUM),0)+1 FROM BOARD)
			, #{title}
			, #{content}
			, #{memberId}
			
)
</insert>



	게시글 등록
	@Override
	public void regBoard(BoardVO board) {
		sqlSession.insert("boardMapper.regBoard", board);
		
	}

2. BoardVO

@Getter
@Setter
@ToString
public class BoardVO {

	private int boardNum;
	
	@NotBlank(message = "제목을 입력하세요")
	private String title;
	
	@NotBlank(message = "내용을 입력하세요")
	private String content;
	
	private String memberId;
	private String createDate;
	
}

 

 

 

3. controller

	게시글 등록
	@PostMapping("/regBoard")
	public String regBoard(@Valid BoardVO boardVO, BindingResult bindingResult, Model model, HttpSession session) {
		
		에러발생
		if(bindingResult.hasErrors()) {
			return "content/reg_board";
		}
		
		글 등록
		else {
			★글쓰기에서 데이터로 memberId를 가져오지 못하기 때문에 session데이터 가져오기 
			MemberVO loginInfo = (MemberVO)session.getAttribute("loginInfo");
			★ boardVO에 setMemberId 데이터 넣기
            boardVO.setMemberId(loginInfo.getMemberId());
			
			boardService.regBoard(boardVO);
			
			return"content/reg_alert";
		}
	
	}

 

4. reg_board.html

 

<div layout:fragment="content">
		<form th:action="@{/board/regBoard}" method="post" th:object="${boardVO}">
			<div class="row justify-content-center">
				<div class="col-6">
					<div class="mb-3">
						<label for="formGroupExampleInput" class="form-label">제목</label> 
						<input type="text" class="form-control" id="formGroupExampleInput"
							th:field="*{title}">
						<div class="hasError" th:if="${#fields.hasErrors('title')}"
							th:errors="*{title}"></div>

						<label for="formGroupExampleInput" class="form-label">작성자</label>
						<input type="text" class="form-control" id="formGroupExampleInput"
							readonly th:value="${session.loginInfo.memberName}">
					</div>

					<label for="formGroupExampleInput" class="form-label">내용</label>
					<div class="form-floating">
						<textarea class="form-control" placeholder="내용을 입력하세요"
							id="floatingTextarea2" style="height: 300px" th:field="*{content}"></textarea>
						<div class="hasError" th:if="${#fields.hasErrors('content')}"
							th:errors="*{content}"></div>
					</div>

					<div class="row">
						<div class="col text-center">
							<button type="submit" class="btn btn-outline-info">등록하기</button>
						</div>
					</div>
				</div>
			</div>

		</form>
	</div>

 

4. reg_alert.html

 

<div layout:fragment ="content">

<script type="text/javascript">
	alert('게시글이 등록되었습니다.')
	location.href = '/board/list';
</script>
	
</div>