error(6)
-
RestDocs - ClassCastException
@Test void 게시글_저장() throws Exception { mockMvc.perform(RestDocumentationRequestBuilders.post("/api/v1/posts") .contentType(MediaType.APPLICATION_JSON) .content(objectMapper.writeValueAsString(postCreateDto))) .andExpect(status().isOk()) .andDo(print()) .andDo(document("post-save", requestFields( fieldWithPath("title").description("게시글 제목"), fieldWithPath("content").description("게시글 내용"), fieldWi..
2022.12.16 -
RestDocs - include file not found
RestDocs로 문서화를 진행하던 도중에 다음의 에러가 발생했다. include file not found Unresolved directive in index.adoc - include::../../build/generated-snippets/post-update/http-response.adoc[] src/docs/asciidoc 디렉토리에 index.adoc을 생성하여 다음과 같이 작성했는데, 화면 오른쪽의 preview가 잘 나오는 것을 보고 build/generated-snippets 하위의 파일들을 잘 읽어들였음을 확인할 수 있었다. 다만 문제는 gradle.build를 실행해서 index.adoc을 static/docs/index.html로 복사하는 과정에서 발생한 것이다. 왜 여기서는 ...
2022.12.16 -
톰캣 JAR 누락으로 인한 오류
톰캣 서버를 띄우고 jsp 페이지와 매핑된 url을 입력하니 아래와 같은 에러가 발생했다. 절대 URI인 [http://java.sun.com/jsp/jstl/core]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. 작성한 jsp 페이지에서는 최상단에 jstl의 태그를 등록한 상태다. KDT Spring App the time on the server is 이 jstl(태그 라이브러리)를 사용하기 위해서는 jstl.jar, taglibs.jar 두개의 라이브러리가 필요하다. 따라서 pom.xml에 두개의 dependency를 등록하였는데 javax.servlet jstl 1.2 taglibs standard 1.1.2 동일한 500에러가 발생한다. 이럴..
2022.11.15 -
[JUnit] org.junit.runners.model.InvalidTestClassError
필자는 JUnit4를 사용했는데, JUnit5에서 제공되는 클래스를 혼용했다. junit5에서는 @RunWith 어노테이션을 지원하지 않는다. 대신 @ExtendWith 어노테이션을 지원한다. 따라서 org.junit.jupiter.api.Test 을 사용할 경우에는 @ExtendWith를 사용해야 한다. 참고로 필자처럼 JUnit4를 사용중이라면 org.junit.jupiter.api.Test이 아니라 import org.junit.Test; 으로 변경해야 한다. 이 변경으로 해결했다. 결론 임포트를 잘하자(전에도 겪은 실수를 반복해서 포스팅하였음)
2022.04.02 -
검증 - Validation (2)
이전 검증 - Validation (1) 포스팅 참고 Controller에서 rejectValue()메서드를 활용해 한층 깔끔해졌다고 해도, 여전히 Controller에는 검증하는 코드가 한가득 있다. 복잡한 검증 로직을 따로 분리하자. ItemValidator를 만들어보자 @Component public class ItemValidator implements Validator { @Override public boolean supports(Class clazz) { return Item.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { Item item = (Item) target;..
2022.03.31 -
검증 - Validation(1)
BindingResult 스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 해당 필드가 여기에 저장된다. BindingResult 가 있으면 @ModelAttribute 에 데이터 바인딩 시 오류가 발생할 경우 컨트롤러가 호출된다! @ModelAttribute에 바인딩 시 타입 오류가 발생하면? BindingResult 가 없으면 400 오류가 발생하면서 컨트롤러가 호출되지 않고, 오류 페이지로 이동한다. BindingResult 가 있으면 오류 정보( FieldError )를 BindingResult 에 담아서 컨트롤러를 정상 호출한다(컨트롤러에서 재주껏 처리하도록) BindingResult에 검증 오류를 적용하는 3가지 방법 @ModelAttribute 의 객체에 타입 오류 등으..
2022.03.31