html에서 DTO에담긴 객체형식이 전송가능할까요?
public class CompanyDTO {
private Long id;
private String name;
private Address address;
@GetMapping("register")
public String companyRegister(Model model) {
model.addAttribute("form", new CompanyDTO());
return "company/register";
}
@PostMapping("register")
public String companyRegister2(CompanyDTO companyDTO) {
companyService.saveCompany(companyDTO);
return "redirect:/company/list";
}
@GetMapping("list")
public String companyList(Model model) {
List<Company> companyList = companyService.findAll();
List<CompanyDTO> companyDTOList = companyService.transDTOList(companyList);
model.addAttribute("company_list", companyDTOList);
return "company/list";
}
<form th:action="@{register}" th:object="${form}" method="post">
<div class="form-group">
<label th:for="name">회사명</label>
<input type="text" th:field="*{name}" class="form-control"
placeholder="이름을 입력하세요">
</div>
<div class="form-group">
<label th:for="city">도시</label>
<input type="text" th:field="*{address.city}" class="form-control"
placeholder="주소를 입력하세요">
</div>
html list(조회부분) > 정상동작합니다
<tr th:each="company : ${company_list}">
<td th:text="${company.id}"></td>
<td th:text="${company.name}"></td>
<td th:text="${company.address.city}"></td>
감사합니다
답변 2
1
안녕하세요 안준석님. 다음과 같이 샘플 코드 구현하여 테스트 해봤는데 정상 작동 하였습니다.
일단 2가지 확인이 필요할 것으로 보입니다.
1. 폼 데이터가 @PostMapping에서 값을 잘 받아오는지
@PostMapping("register")
public String companyRegister2(CompanyDTO companyDTO) {
companyService.saveCompany(companyDTO);
// companyDTO의 값을 log 혹은 콘솔 출력을 하여 잘 받아 왔는지 확인
return "redirect:/company/list";
}
2. 잘 받아 왔다면 DB까지 가는 과정에서 값의 변경이 있는지
companyService.saveCompany(companyDTO); // 이 saveCompany부터 DB까지 과정에서 값이 제대로 저장되는지 확인





0
답변 고마워요.
PostMapping에서 Address값이 null인것을 확인했고,
올려주신 코드랑 비교하면서 원인을 계속찾다가,
Address클래스에 Getter만 설정해뒀던것을 발견했어요
만들때는 Address도 엔티티안에 속하니 Setter가 없는편이 나을거라 생각해 없앴는데,
Setter가없으니 당연히 값이 안받아와졌던 거네요
이 부분은 AddressDTO를 하나더 추가해서 해결하였어요.
감사합니다.
1
안녕하세요 안준석님!
혹시 input 태그에 name 속성을 줘보시겠어요? 아래처럼요.
<input type="text" name="name" th:field="*{name}" class="form-control" placeholder="이름을 입력하세요">
<input type="text" name="address.city" th:field="*{address.city}" class="form-control" placeholder="주소를 입력하세요">
.
감사합니다.
@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.
0
32
2
강의 관련 외 질문입니다.
0
91
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
1
112
1
BeanCreationException
0
104
3
Update 후 UpdateMemberResponse 매핑할 때
0
65
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
109
2
페이징 + 검색조건 관련해서 질문드립니다.
0
77
1
Query Dsl Q파일 질문입니다.
0
92
1
루트 쿼리라는것은
0
68
1
메서드를 분리하는 기준
0
76
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
123
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
97
2
fetch join과 영속화와 OSIV의 관계
0
101
2
Distinct 사용 전 결과에 대한 의문
0
124
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
65
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
82
2
dto 필드 속 엔티티 여부
0
67
1
뷰템플릿 사용 시
0
86
2
Result 클래스 관련 질문
0
59
1
@PostConstruct 프록시 관련 질문드립니다
0
91
1
DTO 대신 Form 사용은 안되나요?
0
142
1
OSIV ON 상태일 때
0
102
1
fetch join VS fetch join 페이징 궁금증
0
192
2
양방향 연관관계 알아보는 법?
0
113
1





