FieldError가 아닌 Item으로 사용자 입력 값 유지하기
866
投稿した質問数 92
상품명, 가격, 수량 필드에 각각 (입력 x), 1, 10000을 입력했고, Item 객체에 각각 "", 1, 10000이 저장되었음을 확인했습니다.
그리고 addForm.html에 아래와 같이 코드를 작성해보았고, 동일하게 Item 객체에 "", 1, 10000이 저장되었음을 확인했습니다.
<div th:text="*{itemName}"></div> -> <div></div>
<div th:text="*{price}"></div> -> <div>1</div>
<div th:text="*{quantity}"></div> -> <div>10000</div>
FieldError가 아닌 Item 객체에 저장된 값을 통해서 사용자가 입력한 값을 유지할 수 있을 것이라 생각하였습니다.
시도1.
addForm.html
<input type="text" id="price" th:field="*{price}" class="form-control" th:errorclass="field-error" placeholder="가격을 입력하세요">th:field에 의해서 value속성이 생길 때, item.getPrice()해서 value="1"이 만들어질 줄 알았으나
-> value=""가 만들어짐
(이때, 사용자 입력값 유지를 Item 객체 통해서 하기 위해, bindingResult.addError(new FieldError("item", "price", "가격은 1,000 ~ 1,000,000 까지 허용합니다.")를 사용했습니다. item.getPrice()를 넣지 않음)
시도2. 위 코드에 th:value="*{price}" 속성 추가
당연히 value="1"이 만들어질 줄 알았으나
-> value=""가 만들어짐
왜 value 속성이 제가 예상한 대로 만들어지지 않고, value=""로 만들어지는 것일까요?
(타입 오류는 발생하지 않고, 오직 검증 오류가 발생한다고 가정했을 때,) Item 객체로 사용자 입력 값을 유지할 수는 없을까요?
回答 2
0
form 태그 안에 있는 input이 아니라 완전 별도의 장소에서 th:text="${item.price}"를 출력해보시면 값이 유지되는 것을 확인할 수 있습니다.
컨트롤러에서 addForm을 호출하기 직전에 item객체의 내용물을 log로 확인해보셔도 price 값은 유지되는 것을 확인할 수 있습니다.
값이 유지되지 않는 것처럼 보이는 이유는 값의 출력을 th:text가 아닌 th:object="${item}" 과 th:field 등을 사용했기 때문에 단순히 item.getPrice()가 호출되는 것이 아닌 bindingResult에 에러가 있는 필드의 경우 bindingResult에서 그 값을 찾기 때문이라고 생각됩니다.
도토리님께서 bindingResult에 잘못된 값이라도 그 값을 주지 않는 FieldError 생성자를 사용하셨기 때문에 값이 유지되지 않는 것처럼 보입니다.
0
안녕하세요. 도토리님
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.
감사합니다.
이미지 업로드와 db 트랜잭션 묶는법
0
39
1
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
45
2
MessageSourceTest 코드
0
46
1
인터셉터 에러 설정
0
47
1
resolveArgument()메서드 질문
0
54
1
43강 검증1 에서 실패 로직 관련 질문있습니다.
0
52
2
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
2
130
3
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
0
86
3
pdf 오타 문의
0
54
1
ItemUpdateForm 검증 관련 질문입니다.
0
46
1
22page 링크 주소 변경
0
55
2
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
0
52
1
섹션3번 수업에 대한 질문입니다.
0
78
2
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
0
84
2
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
0
63
1
자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다
0
140
3
스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문
0
61
1
톰캣 에러 페이지가 안보입니다.
0
98
2
apiEceptionController에서 센드 에러 호출하면 안되는지?
0
80
1
세션 타임아웃시 쿠키 삭제 방법이 없나요?
0
116
2
ApiExceptionController 질문드립니다.
0
62
1
셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?
0
63
1
MemberRepository 필드의 fianl 선언 유무
0
83
2
혹시 index.html 에서는 fragment 사용이 안되는건가요
0
57
1

