해결된 질문
작성
·
369
·
수정됨
1
강의 코드를 그대로 따라가고 있지는 않고 기존에 알고 있던 내용이랑 합쳐서 코드를 작성하고 있습니다.
Controller
@PutMapping("/user")
public void updateUserName(@RequestBody UpdateUserDto updateDto) {
userService.updateUserName(updateDto.getId(), updateDto.getName());
}
Dto
public class UpdateUserDto {
private long id;
private String name;
public long getId() {
return id;
}
public String getName() {
return name;
}
Repository
@Override
public void updateUserName(long id, String name) {
String sql = "update user set name = ? where id = ?";
jdbcTemplate.update(sql, name, id);
}
Service
@Override
public void updateUserName(long id, String name) {
userRepository.updateUserName(id, name);
}
수정을 눌렀을 때 name은 정상적으로 값이 넘어오는데 id가 계속 0으로 넘어옵니다,,
등록 시에는 DB에 id가 정상적으로 입력되고 있는데 뭐가 문제일까요?
답변 1
1
안녕하세요 hope님!! 남겨주신 코드를 확인해보았을 때 모두 정상적으로 작성해주신 것 같아요!!!
@RequestBody
도 잘 작성해주셨고~ DTO도 잘 만들어주셔서 id
가 넘어오지 않을리가 없을 것 같은데 이상하군요!!
제공되는 웹 UI를 사용하고 계신 상황에서, Controller로 넘어온 DTO의 id
를 가져오니 0이 찍힌다 라는 말씀이시죠~~
음.. 그렇다면 한 가지 의심해볼만한 내용은 GET API
에서 id
를 정상적으로 주고 있는지 확인해봐야 할 것 같습니다!
결국 화면에서는 GET을 통해 넘어온 id를 다시 넘길 뿐이라서 만약 GET API에서 id를 모두 0으로 주고 있다거나 하는 에러가 있다면, PUT API까지 영향을 줄 수 있을 것 같아요!
또한, 브라우저의 개발자 도구 > Network를 확인해보시면, 화면에서 서버로 데이터를 어떻게 전달하고 있는지 확인해보실 수도 있답니다! 이를 사용하면
클라이언트는 값을 5로 보냈는데 서버가 0으로 받는건지
클라이언트가 값을 0으로 보내서 서버가 0으로 받는건지
구분할 수 있어 보다 정확한 진단을 하실 수 있을 거에요!
꼭 해결되셨으면 좋겠습니다~ 감사합니다! 🙏🙏
방금 해결했습니다..!
개발자모드에서 넘어가는 값 확인해보니까 id가 null로 넘어가고 있었네요.
감사합니다.