@RequestMapping @JsonView(MyJacksonView2.class) public ResponseEntity<JacksonViewBean> handleResponseEntity() { JacksonViewBean bean = new JacksonViewBean(); bean.setWithView1("with"); bean.setWithView2("with"); bean.setWithoutView("without"); ModelAndView mav = new ModelAndView(new MappingJackson2JsonView()); mav.addObject("bean", bean); return new ResponseEntity<>(bean, HttpStatus.OK); }
@Bean public org.springframework.web.servlet.view.ContentNegotiatingViewResolver viewResolver(ApplicationContext context, ContentNegotiationManager contentNegotiationManager) { ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver(); ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); viewResolver.setCharacterEncoding(StandardCharsets.UTF_8.toString()); viewResolver.setTemplateEngine(webTemplateEngine(context)); ForwardAwareInternalResourceViewResolver forwardAwareInternalResourceViewResolver = new ForwardAwareInternalResourceViewResolver(); BeanNameViewResolver beanNameViewResolver = new BeanNameViewResolver(); resolver.setViewResolvers(Arrays.asList(viewResolver, forwardAwareInternalResourceViewResolver, beanNameViewResolver)); MappingJackson2JsonView jackson2JsonView = new MappingJackson2JsonView(); jackson2JsonView.setExtractValueFromSingleKeyModel(true); resolver.setDefaultViews(Arrays.asList(jackson2JsonView)); resolver.setContentNegotiationManager(contentNegotiationManager); return resolver; }
@Test public void renderWithCustomSerializerLocatedByFactory() throws Exception { SerializerFactory factory = new DelegatingSerializerFactory(null); ObjectMapper mapper = new ObjectMapper(); mapper.setSerializerFactory(factory); view.setObjectMapper(mapper); Object bean = new TestBeanSimple(); Map<String, Object> model = new HashMap<>(); model.put("foo", bean); model.put("bar", new TestChildBean()); view.render(model, request, response); String result = response.getContentAsString(); assertTrue(result.length() > 0); assertTrue(result.contains("\"foo\":{\"testBeanSimple\":\"custom\"}")); validateResult(); }
@Test public void filterSingleKeyModel() throws Exception { view.setExtractValueFromSingleKeyModel(true); Map<String, Object> model = new HashMap<>(); TestBeanSimple bean = new TestBeanSimple(); model.put("foo", bean); Object actual = view.filterModel(model); assertSame(bean, actual); }
@Test public void renderWithPrettyPrint() throws Exception { ModelMap model = new ModelMap("foo", new TestBeanSimple()); view.setPrettyPrint(true); view.render(model, request, response); String result = response.getContentAsString().replace("\r\n", "\n"); assertTrue("Pretty printing not applied:\n" + result, result.startsWith("{\n \"foo\" : {\n ")); validateResult(); }
/** * * @param request * @param response * @param handler * @param ex * @return */ @ResponseBody public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { logger.error(ex); String message = null; ModelAndView model = new ModelAndView(); //判断是否ajax if((request.getHeader("X-Requested-With") != null && "XMLHttpRequest".equals( request.getHeader("X-Requested-With").toString()))){ MappingJackson2JsonView view = new MappingJackson2JsonView(); Map attributes = new HashMap(); attributes.put("status", Boolean.TRUE); attributes.put("info", message); view.setAttributesMap(attributes); model.setView(view); }else{ model.setViewName("/syserror/error"); } return model; }
@Override public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { Map<String, Object> body = getErrorAttributes(request, isIncludeStackTrace(request, MediaType.ALL)); HttpStatus status = getStatus(request); response.setStatus(status.value()); MappingJackson2JsonView view = new MappingJackson2JsonView(); view.setObjectMapper(JsonUtil.getInstance()); view.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE); return new ModelAndView(view, body); }
public org.springframework.web.servlet.View stormpathJsonView() { MappingJackson2JsonView jsonView = new MappingJackson2JsonView(objectMapper); // 786: Suppress Jackson's setting a Cache-Control, since they're set in individual controllers // Without this, we'll end up with duplicate Cache-Control headers jsonView.setDisableCaching(false); return jsonView; }
private static MappingJackson2JsonView createDelegatedView() { val view = new MappingJackson2JsonView(); view.setPrettyPrint(true); view.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL).findAndRegisterModules(); return view; }
if(CommonUtil.isAjax(request)) MappingJackson2JsonView view = new MappingJackson2JsonView(); view.setObjectMapper(JsonUtil.getObjectMapper()); mv.addObject("responseMessage", "We had some problems while serving your request. We are looking into it"); mv.addObject("responseCode", GenericResponse.ERROR.code());
/** * Get the view to use. * * @return Always returns an instance of {@link MappingJackson2JsonView}. */ @Override public View resolveViewName(String viewName, Locale locale) throws Exception { MappingJackson2JsonView view = new MappingJackson2JsonView(); view.setPrettyPrint(true); // Lay the JSON out to be nicely readable return view; } }
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) { if (hasResponseBody(handler)) { MappingJackson2JsonView view = new MappingJackson2JsonView(); view.addStaticAttribute("success", false); if (e instanceof ResultException) { ResultException re = ((ResultException) e); view.addStaticAttribute("code", re.getCode()); view.addStaticAttribute("message", re.getMessage()); view.addStaticAttribute("data", re.getData()); } else if (e instanceof AccessDeniedException) { view.addStaticAttribute("code", HttpStatus.FORBIDDEN.value()); view.addStaticAttribute("message", "您暂无操作权限!"); view.addStaticAttribute("data", e.getClass().getSimpleName()); } else if (e instanceof AuthenticationException) { view.addStaticAttribute("code", HttpStatus.UNAUTHORIZED.value()); view.addStaticAttribute("message", "授权验证失败!"); view.addStaticAttribute("data", e.getClass().getSimpleName()); } else { view.addStaticAttribute("code", 0); view.addStaticAttribute("message", "失败!"); view.addStaticAttribute("data", ExceptionUtils.getBusinessTraces(e, businessPackage));
MappingJackson2JsonView view = new MappingJackson2JsonView(); Map attributes = new HashMap(); attributes.put("status", Boolean.TRUE); attributes.put("info", message); view.setAttributesMap(attributes); model.setView(view); }else{
@Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) { // log记录异常 LOGGER.error(e.getMessage(), e); // 非控制器请求照成的异常 if (!(handler instanceof HandlerMethod)) { return new ModelAndView("error/500"); } HandlerMethod handlerMethod = (HandlerMethod) handler; if (WebUtils.isAjax(handlerMethod)) { Result result = new Result(); result.setMsg(e.getMessage()); MappingJackson2JsonView view = new MappingJackson2JsonView(); view.setObjectMapper(jacksonObjectMapper); view.setContentType("text/html;charset=UTF-8"); return new ModelAndView(view, BeanUtils.toMap(result)); } // 页面指定状态为500,便于上层的resion或者nginx的500页面跳转,由于error/500不适合对用户展示 // response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return new ModelAndView("error/500").addObject("error", e.getMessage()); }
public org.springframework.web.servlet.View stormpathJsonView() { MappingJackson2JsonView jsonView = new MappingJackson2JsonView(objectMapper); // 786: Suppress Jackson's setting a Cache-Control, since they're set in individual controllers // Without this, we'll end up with duplicate Cache-Control headers jsonView.setDisableCaching(false); return jsonView; }
@SuppressWarnings("rawtypes") @Test public void filterTwoKeyModel() throws Exception { view.setExtractValueFromSingleKeyModel(true); Map<String, Object> model = new HashMap<>(); TestBeanSimple bean1 = new TestBeanSimple(); TestBeanSimple bean2 = new TestBeanSimple(); model.put("foo1", bean1); model.put("foo2", bean2); Object actual = view.filterModel(model); assertTrue(actual instanceof Map); assertSame(bean1, ((Map) actual).get("foo1")); assertSame(bean2, ((Map) actual).get("foo2")); }
@Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.enableContentNegotiation(new MappingJackson2JsonView()); registry.jsp("/", ".jsp"); }
MappingJackson2JsonView jsonView = new MappingJackson2JsonView(); jsonView.setExtractValueFromSingleKeyModel(true); ModelAndView modelAndView = new ModelAndView(jsonView); modelAndView.addObject(myResponseObject);
MappingJackson2JsonView view = new MappingJackson2JsonView(); Map<String, Object> attributes = Maps.newHashMap(); attributes.put("type", OperationResult.OPERATION_RESULT_TYPE.failure); attributes.put("message", errorMessage); attributes.put("exception", e.getMessage()); view.setAttributesMap(attributes); mv.setView(view); return mv; MappingJackson2JsonView view = new MappingJackson2JsonView(); Map<String, Object> attributes = Maps.newHashMap(); attributes.put("type", OperationResult.OPERATION_RESULT_TYPE.failure); attributes.put("message", errorMessage); attributes.put("exception", e.getMessage()); view.setAttributesMap(attributes); mv.setView(view); return mv;
@Test public void contentNegotiation() { MappingJackson2JsonView view = new MappingJackson2JsonView(); this.registry.enableContentNegotiation(view); ContentNegotiatingViewResolver resolver = checkAndGetResolver(ContentNegotiatingViewResolver.class); assertEquals(Arrays.asList(view), resolver.getDefaultViews()); assertEquals(Ordered.HIGHEST_PRECEDENCE, this.registry.getOrder()); }