main.html
<a href="/myPage/info" id="nickname" th:text="*{memberNickname}">닉네임</a>
주소 구분자 "^^^" 이렇게 넣어놓음 다시 보여줘야함
session 에 있는 loginMember 정보 얻어오기
@SessionAttribute("loginMember") Member loginMember
사용하려면 Controller 위에 @SessionAttributes 어노테이션 붙여줘야함
@SessionAttributes({"loginMember"})
MyPageController
/** 내 정보 조회/수정 화면으로 전환
* @param loginMember : 세션에 존재하는 loginMember를 얻어와 매개변수에 대입
* @param model : 데이터 전달용 객체 (기본 request scope)
* @return myPage/myPage-info 로 요청 위임
*/
@GetMapping("info")
public String info(
@SessionAttribute("loginMember") Member loginMember,
Model model
) {
// 이동하자마자 보여줘야하는 내용들 (현재 로그인한 사람의 정보)
// 주소만 꺼내옴
String memberAddress = loginMember.getMemberAddress();
// 주소 있을 경우에만 동작
if(memberAddress != null) {
// 구분자 "^^^"를 기준으로
// memberAddress 값을 쪼개어 String[] 로 반환
String[] arr = memberAddress.split("\\^\\^\\^");
// "^^^" 안 먹힘, "\^\^\^" 이것도 안 먹힘
// regex 정규표현식이라서 그냥 문자열 안 먹힘
// "08350^^^서울 구로구 천왕동 2-19^^^천왕"
// -> ["08350", "서울 구로구 천왕동 2-19", "천왕"]
model.addAttribute("postcode", arr[0]);
model.addAttribute("address", arr[1]);
model.addAttribute("detailAddress", arr[2]);
}
return "myPage/myPage-info";
}
myPage-info.html
<div class="myPage-row">
<label>닉네임</label>
<input type="text" name="memberNickname"
maxlength="10" id="memberNickname"
th:value="${session.loginMember.memberNickname}"
>
</div>
<div class="myPage-row">
<label>전화번호</label>
<input type="text" name="memberTel"
maxlength="11" id="memberTel"
th:value="${session.loginMember.memberTel}"
>
</div>
<div class="myPage-row info-title">
<span>주소</span>
</div>
<div class="myPage-row info-address">
<input type="text" name="memberAddress"
placeholder="우편번호" id="postcode"
th:value="${postcode}"
>
<!-- 주소는 request scope 에 세팅해서 보내줌 -->
<button type="button">검색</button>
</div>
<div class="myPage-row info-address">
<input type="text" name="memberAddress"
placeholder="도로명/지번 주소" id="address"
th:value="${address}"
>
</div>
<div class="myPage-row info-address">
<input type="text" name="memberAddress"
placeholder="상세 주소" id="detailAddress"
th:value="${detailAddress}"
>
</div>
로그인해서 닉네임 클릭했을 때 보여지는 화면
