프로필 수정 폼

Yuri Lee·2020년 11월 11일
0

settings package 생성

settings 프로필 관련 설정 기능을 위해서 생성한다.

SettingsController

 <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

폼을 채울 객체를 하나 만든다. 수정 뷰에서 필요하므로 만들어준다.

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 기반 웹 애플리케이션 개발

profile
Step by step goes a long way ✨

0개의 댓글