• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Spring 게시판 댓글기능2 CommentController 오류

댓글기능2 CommentController 오류

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #129685

    dt
    참가자
    CommentController 클래스에서 코드를 이렇게 작성했고,
    package com.jaeyeong.sbmall.comment;
    import com.jaeyeong.sbmall.member.CustomUser;
    import lombok.RequiredArgsConstructor;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.security.core.Authentication;
    @Controller
    @RequiredArgsConstructor
    public class CommentController<CustomUser> {
      private final CommentRepository commentRepository;
    @PostMapping("/comment")
      String postComment(@RequestParam String content, @RequestParam Long parent, Authentication auth) {
        CustomUser user = (CustomUser) auth.getPrincipal();
        var data = new Comment();
        data.setContent(content);
        data.setUsername(user.getUsername());   // 이 부분에서 오류남
        data.setParentId(parent);
        commentRepository.save(data);
        return "redirect:/list";
      }
    }
    
    
    
    CustomUser 클래스도 따로 아래와 같이 분리했는데
    
    package com.jaeyeong.sbmall.member;
    import org.springframework.security.core.GrantedAuthority;
    import org.springframework.security.core.userdetails.User;
    import java.util.Collection;
    public class CustomUser extends User {
      public String displayName;
      public CustomUser(
          String username,
          String password,
          Collection<? extends GrantedAuthority> authorities
      ) {
        super(username, password, authorities);
      }
    }
    
    
    자꾸 CommentController.java의 'data.setUsername(user.getUsername());' 부분에서 'Cannot resolve method 'getUsername' in 'CustomUser''라는 오류가 발생합니다.
     
    #129690

    codingapple
    키 마스터
    loadUserByUsername 함수에서 CustomUser 잘 쓰고있나 확인해봅시다
    #129732

    dt
    참가자
    loadUserByUsername 함수 다시 확인해봤는데, 강의에서 가르쳐 주신 대로 그대로 잘 되어 있습니다.. 실제로 CustomUser가 MyUserDetailsService.java에 들어 있을 때는 잘 작동이 되었었구요..
    
    @RequiredArgsConstructor
    @Service
    public class MyUserDetailsService implements UserDetailsService {
      private final MemberRepository memberRepository;
      @Override
      public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
          var result = memberRepository.findByUsername(username);
          if (result.isEmpty()) {
            throw new UsernameNotFoundException("그런아이디 없음");
          }
          var user = result.get();
          List<GrantedAuthority> authorities = new ArrayList<>();
          authorities.add(new SimpleGrantedAuthority("일반 유저"));
          var a = new CustomUser(user.getUsername(), user.getPassword(), authorities);
          a.displayName=user.getDisplayName();
          return a;
      }
    }
    
    MyUserDetailsService 클래스가 이대로 되어 있던데, loadUserByUsername에서 잘못된 부분은 없지 않나요?
    #129739

    codingapple
    키 마스터
    CommentController<CustomUser>에 <>는 지워봅시다
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠