RedirectAttributes 개념
리다이렉션 수행시, 한 컨트롤러 메서드에서 다른 컨트롤러 메서드로 Attributes를 전달하는데 이용한다.
데이터 저장시에는 redirectAttributes.addAttribute() 또는 redirectAttributes.addFlashAttributes()를 사용한다.
- 주문이 완료된 후 주문 결과 상세 페이지로 Redirect하고, 그 결과를 보여주고 싶을때, 주문 처리가 끝났을 때 생성된 주문번호를 리 다이렉트 페이지로 넘길 수 있다.
-> 위와 같이 노출해도 상관없는 정보를 넘길때는 redirectAttributes.addAttribute()로 전달한다. - 리다이렉트 시, 노출하기 싫은 정보를 숨길때 addFlashAttributes로 Session을 사용하여 redirect의 정보를 저장했다가 redirect 이후에 정보를 바로 삭제하는 일시적 데이터를 저장한다.
비밀번호 확인 후, 비밀번호 변경 페이지로 넘어가는 코드 (addFlashAttributes 사용)
<HTML 코드>
<form id="checkPwForm" method="post" action="${pageContext.request.contextPath}/customer/postModifyCustomerPw">
<!-- 변경할 비밀번호 -->
<label class="form-label">PassWord :</label>
<input id="checkPw" name="checkPw" type="password" class="form-control" placeholder="비밀번호 확인">
<!-- 원래 비밀번호 -->
<input id="prePw" name="prePw" type="hidden" value="${customer.customerPw}">
<button id="modifyCustomerPwBtn" type="button" class="btn btn-sm btn-outline-primary" style="margin-right: 7px;">비밀번호 변경</button>
</form>
<컨트롤러>
@PostMapping("/customer/postModifyCustomerPw")
public String postModifyCustomerPw(@RequestParam String prePw, RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("prePw", prePw);
return "redirect:/customer/modifyCustomerPw";
}
@GetMapping("/customer/modifyCustomerPw")
public String modifyCustomerPw(@ModelAttribute("prePw") String prePw, Model model) {
model.addAttribute("prePw", prePw);
return "customer/modifyCustomerPw";
}
# 추가 정리
이번 프로젝트 끝나면 해야할 것
- flash관련 인터페이스에 대해 알아보기
- redirectAttributes 를 개발자들은 어떤식으로 쓰는지 코드 리뷰해보기
'SPRING' 카테고리의 다른 글
DI / Bean(@ComponentScan) (0) | 2024.12.09 |
---|---|
Filter / Interceptor / AOP (0) | 2024.12.09 |
[Service & MySQL 에러] SQLIntegrityConstraintViolationException (0) | 2024.11.13 |
[java 에러] row cannot be resolved to a variable (0) | 2024.11.13 |
{fn:substring} HTML 에서 글자열 자르기 (0) | 2024.11.12 |