스프링과 JPA 기반 웹 어플리케이션 개발/1부 (개발환경, 회원가입, 로그인, 계정설정)31 23. 프로필 수정 처리 정말로 쉬운 폼 처리 비어있는 값을 허용한다. (기존에 있던 값을 삭제하고 싶을 수도 있기 때문에...) 중복된 값을 고민하지 않아도 된다. 확인할 내용은 입력 값의 길이 정도. 폼 처리 에러가 있는 경우 폼 다시 보여주기. 에러가 없는 경우 저장하고, 프로필 수정 페이지 다시 보여주기.(리다이렉트) 수정 완료 메시지. 리다이렉트시에 간단한 데이터를 전달하고 싶다면? RedirectAttributes.addFlashAttribute() https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/support/RedirectAttributes.html RedirectAttributes (Spring Fr.. 2020. 4. 21. 22. 프로필 수정 컨트롤러 Bio, Link, Occupation, Location 정보만 입력받아서 Account 정보를 수정한다. SettingsController 추가 package me.weekbelt.studyolle.settings; @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"; } } 화면에 보여줄 정보를 담.. 2020. 4. 21. 21. Open EntityManager (또는 Session) In View 필터 JPA EntityManager(영속성 컨텍스트)를 요청을 처리하는 전체 프로세스에 바인딩 시켜주는 필터. 뷰를 랜더링 할때까지 영속성 컨텍스트를 유지하기 때문에 필요한 데이터를 랜더링 하는 시점에 추가로 읽어올 수 있다.(지연 로딩, Lazy Loading) 엔티티 객체 변경은 반드시 트랜잭션 안에서 할 것 그래야 트랜잭션 종료 직전 또는 필요한 시점에 변경 사항을 DB에 반영 현재 버그 회원가입후 이메일인증을 한 후에도 DB에 반영이 되지 않는다. 컨트롤러에서 데이터를 변경했다. 왜 DB에 반영되지 않았을까? 트랜잭션 범위 밖에서 일어난 일이기 때문에! 스터디올래의 선택 데이터 변경은 서비스 계층으로 위임해서 트랜잭션안에서 처리한다. 데이터 조회는 Repository 또는 서비스를 사용한다. Acco.. 2020. 4. 21. 20. 프로필 뷰 정보의 유/무 여부에 따라 보여줄 메시지가 다르다. 현재 유저가 프로필을 수정할 수 있는 권한이 있는지 판단해야 한다. AccountController에 프로필 뷰 요청하는 핸들러 구현 package me.weekbelt.studyolle.account; @RequiredArgsConstructor @Controller public class AccountController { // 기존 코드 ....... @GetMapping("/profile/{nickname}") public String viewProfile(@PathVariable String nickname, Model model, @CurrentUser Account account){ Account byNickname = accountRepo.. 2020. 4. 21. 이전 1 2 3 4 5 6 ··· 8 다음