multipart로 자격증 등록 기능을 구현하는데
자격증 이미지 파일이 필수가 아니여서 파일은 null값이 가능했다.
@PutMapping(value = "/techgrade", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
@ResponseWrapper
public Boolean reqPutEmployeeTechnologyGrade(EmployeeTechnologyGradeDto employeeTechnologyGradeDto,
HttpServletRequest request,
HttpServletResponse response) throws ServiceException {
return employeeService.reqPutEmployeeTechnologyGrade(employeeTechnologyGradeDto, request, response);
컨트롤러에 EmployeeTechnologyGradeDto를 파라미터로 받아오고 테스트를 해보았는데
파일이 같이 올때는 오류가 안났지만 파일이 없을때는 multipart타입이 아니라고 에러가 났다.
알고보니 multipart으로 보낼때 파일을 안보내려면 아예 파라미터에 파일 변수가 없어야했다.
const formData = new FormData();
for (const key in params) {
if (params[key] !== null) {
formData.append(key, params[key]);
}
}
이렇게 값이 null인경우는 FormData에 추가를 안하고 보내주니까 파일이 없어도 오류가 나지 않았다.
이 방법 또는 delete연산자로 객체안의 속성을 제거하는 방법도 있다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/delete
delete 연산자 - JavaScript | MDN
delete 연산자는 객체의 속성을 제거합니다. 제거한 객체의 참조를 어디에서도 사용하지 않는다면 나중에 자원을 회수합니다.
developer.mozilla.org
'Java, Spring' 카테고리의 다른 글
| [Java] private static을 쓰는 경우 (0) | 2022.03.03 |
|---|---|
| [Spring Boot] 점층적 생성자패턴 vs 자바빈즈패턴 vs 빌더패턴 장단점을 알아보자 (0) | 2022.02.24 |
| [Spring] js, css를 못찾는 404 에러 해결법 (0) | 2022.01.22 |
| [Spring Boot] Setter를 무분별하게 사용하면 안되는 이유 (0) | 2021.01.21 |
| [Spring Boot] 필터(Filter)와 인터셉터(Interceptor)의 차이 (0) | 2021.01.21 |