Spring 일지 #25 (20210914) 화면 구현(주소 삭제, 수정)
25. 주소 삭제, 수정
-주소 삭제
*저장소 삭제 방법 추가(AddressRepository.java)
... ...
//주소번호가 오면 삭제
@Transactional
void deleteByNo(Long no);
//주소번호와 주소정보가 둘다 일치 할때 삭제
@Transactional
void deleteByNoAndAddr(Long no, String addr);
//주소번호와 회원의 아이디가 일치 할때 삭제
@Transactional
void deleteByNoAndMember_Userid(Long no, String userid);
... ...
*address_delete GET 등록(MemberController.java)
//127.0.0.1:8080/ROOT/member/address_delete?no=
@GetMapping(value="/address_delete")
public String addressDelete(Authentication auth, @RequestParam(name = "no")long no) {
if(auth != null) {
User user = (User) auth.getPrincipal();
//기본키의 주소번호 and 현재 사용자의 아이디
aRepository.deleteByNoAndMember_Userid(no, user.getUsername());
return "redirect:/member/address";
}
return "redirect:/member/login";
}
*주소 삭제
-주소 수정
*address_update GET 등록(MemberController.java)
//127.0.0.1:8080/ROOT/member/address_update?no=
@GetMapping(value="/address_update")
public String addressUpdate(Authentication auth, Model model, @RequestParam(name = "no")long no) {
if(auth != null) {
Address address = aRepository.findById(no).get();
model.addAttribute("address", address);
return "member_address_update";
}
return "redirect:/member/login";
}
*페이지 생성(member_address_update.jsp)
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form th:action="@{/member/address_update}" method="post">
<input type="text" name="no" th:value="${address.no}" readonly />
<input type="text" name="addr" th:value="${address.addr}" placeholder="주소입력"/>
<input type="submit" value="주소 수정" />
</form>
</body>
</html>
*화면 확인
*address_update POST 등록(MemberController.java)
@PostMapping(value = "/address_update")
public String addressUpdatePost(Authentication auth,
@ModelAttribute Address address) {
if(auth != null) {
User user = (User) auth.getPrincipal();
Member member = mRepository.findById(user.getUsername()).get();
address.setMember(member);
aRepository.save(address);
return "redirect:/member/address";
}
return "redirect:/member/login";
}
*entity 수정(Address.java)
**수정 시 날짜는 변경되지 않도록 하기 위해 updatable = false 추가한다.
... ...
@CreationTimestamp
@Column(updatable = false, name = "REGDATE" )
private Date regdate; //등록일
... ...
*수정하기