인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

th:field 부분이 데이터 입력처리시 에러가납니다.

해결된 질문

작성

·

1.1K

0

강좌에 나와있는대로 form class를 만들고, 타임리프를 이용하여 form 태그에 th:object 를 선언했습니다.

인풋박스에 th:field 를 사용했는데 자동완성이 안됐지만 컴파일시 오류가 없어, 문제없다고 생각했는데, 데이터 입력후 post전송을하니 th:field 부분에서 오류가 났습니다.

찾아봐도 잘 모르겠어서 문의드립니다.

답변 3

1

네 답변 너무 감사드립니다.

오류때문에 수정을 많이 하다보니 제대로확인을 못했던거 같습니다.

오류내용부터 꼼꼼히 확인해봐야겠네요.

참고로, 타임리프 에러는 컨트롤러에서 form에 빈객체를 전달할때 addAttribute가 아닌 매개변수로 전달하는 방식으로 수정해서 최종해결됐습니다.

1

김영한님의 프로필 이미지
김영한
지식공유자

소스코드 확인했습니다.

1. th:field는 다음과 같은 오류가 발생했습니다.

Neither BindingResult nor plain target object for bean name 'eventForm' available as request attribute

eventForm이라는 이름의 폼 객체가 등록되어 있지 않은 오류입니다.

컨트롤러를 확인해보면 실제 eventForm이라는 폼이 등록되지 않습니다.

    @PostMapping("/basicForm")

    public String setEventBasic(@Valid ReqEventForm reqEventForm, BindingResult result) {}

이런경우 다음과 같이 @ModelAttribute("eventForm")으로 이름을 지정해주면 됩니다.

    @PostMapping("/basicForm")

    public String setEventBasic(@Valid @ModelAttribute("eventForm") ReqEventForm reqEventForm, BindingResult result) {

2. Event 클래스의 빌더 사용문제

- 상위에 EventCategory eventCategory;가 초기화 되어 있지 않습니다.

        EventCategory eventCategory = null;로 초기화 하면 됩니다.

- 추가로 Event 클래스에 @Builder가 2개 있습니다. 하나만 사용하셔야 합니다.

도움이 되셨길 바래요^^

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김대호님

도움을 드리고 싶은데, 어떤 오류가 발생했는지 내용이 없어서 도움을 드리기가 어렵습니다.

전체 소스코드를 압축해서 어떤 부분에서 오류가 발생하는지 전체 프로젝트를 압축해서 올려주세요.

감사합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기