settings 프로필 관련 설정 기능을 위해서 생성한다.
<a class="list-group-item list-group-item-action"
th:classappend="${currentMenu == 'profile'}? active"
href="#" th:href="@{/settings/profile}">프로필</a>
<div th:replace="fragments.html :: settings-menu(currentMenu='profile')"></div>
profile 이 선택되어진 상태!
프로필을 수정할 수 있는 있도록 경로 설정 /settings/profile 위 경로로 들어오면 수정 폼을 보여주도록 한다.
SettingsController.java
package com.goodmoim.settings;
import com.goodmoim.account.CurrentUser;
import com.goodmoim.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class SettingsController {
@GetMapping("/settings/profile")
public String profileUpdateForm(@CurrentUser Account account, Model model) {
model.addAttribute(account);
model.addAttribute(new Profile(account));
return "settings/profile";
}
}
어떤 유저의 프로필을 보여줄지는 굳이 url을 명시할 필요는 없다. 수정할 수 있는 것은 오직 자기 자신의 프로필 일 뿐이다. 현재 유저 정보를 가져오면 된다.
폼을 채울 객체를 하나 만든다. 수정 뷰에서 필요하므로 만들어준다.
Profile.java
package com.goodmoim.settings;
import com.goodmoim.domain.Account;
import lombok.Data;
@Data
public class Profile {
private String bio;
private String url;
private String occupation;
private String location;
public Profile(Account account) {
this.bio = account.getBio();
this.url = account.getUrl();
this.occupation = account.getOccupation();
this.location = account.getLocation();
}
}
4개의 정보를 받아오도록 한다. 채울 때 account 에 있는 정보를 조회해서(model.addAttribute(new Profile(account));) 채워야 하므로 this.bio = account.getBio(); 와 같은 방법을 활용한다. 이거 말고도 모델 래퍼라는 기능을 사용할 수도 있다.
th:object="${profile}"
컨트롤러에서 준 profile 을 사용한다.
출처 : 인프런 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발