-
Spring Boot | return jsonView 사용, JSON 데이터로 응답▼ Backend/스프링 (Spring) 2021. 8. 4. 12:15반응형
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [jsonView]
template might not exist or might not be accessible by any of the configured Template Resolvers클라이언트에서 요청한 데이터를 JSON(JavaScript Object Notation) 형식으로 리턴할 때
Model 또는 ModelAndView에 데이터를 담아 jsonView로 설정했지만 에러 발생
Case1, Case2와 같이 데이터를 jsonView로 리턴 중일 때 발생
//Case1 @PostMapping("/login/action.ajax") public String loginAction(Model model) throws Exception { model.addAttribute("code", "code_data"); return "jsonView"; } //Case2 @PostMapping("/rewrite/action.ajax") public ModelAndView rewriteAction() throws Exception { ModelAndView mav = new ModelAndView("jsonView"); mav.addObject("code", "code_data"); return mav; }
# jsonView을 사용하기 위한 설정
@Configuration 사용 시
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.view.json.MappingJackson2JsonView; @Configuration public class WebConfig implements WebMvcConfigurer { @Bean MappingJackson2JsonView jsonView() { return new MappingJackson2JsonView(); } }
DispatcherServlet 사용 시
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"> <property name="contentType" value="application/json;charset=UTF-8"> </property> </bean>
Error resolving template [/login/action.ajax] template might not exist or might not be accessible by any of the configured Template Resolvers
@ResponseBody 어노테이션 추가
@PostMapping("/login/action.ajax") @ResponseBody public HashMap<String, String> loginAction() throws Exception { HashMap<String, String> returnMap = new HashMap<>(); returnMap.put("code", "code_data"); return returnMap; }
@ResponseBody를 메서드마다 추가하기 번거롭다면
@Controller를 @RestController로 변경한다.
하위의 메서드마다 @ResponseBody가 자동 생성된다.
반응형'▼ Backend > 스프링 (Spring)' 카테고리의 다른 글
Spring Boot | CSRF 설정 (Spring Security) (1) 2021.08.06 Spring Boot | 인터셉터(Interceptor) 적용하기 (0) 2021.08.04 Spring Boot | Thymeleaf Layout 공통 Header, Footer 설정하기 (0) 2021.07.22 Spring Boot | lombok 사용 시 Getter, Setter Undefined (1) 2021.07.21 Spring Boot | JPA + lombok 사용하기 (2) 2021.07.19