类org.springframework.web.servlet.view.json.MappingJackson2JsonView源码实例Demo

下面列出了怎么用org.springframework.web.servlet.view.json.MappingJackson2JsonView的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: seppb   文件: ScheduleMethodHandlerAdapter.java
/**
 * 调用HandlerMethod方法,并返回json视图
 * @param request
 * @param response
 * @param handlerMethod
 * @return
 */
@Override
protected ModelAndView handleInternal(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod) {

    Map<String, Object> data = Maps.newHashMap();
    data.put("service", handlerMethod.getBeanType().getSimpleName());
    data.put("method", handlerMethod.getMethod().getName());
    Stopwatch stopwatch = Stopwatch.createStarted();
    try {
        // 调用HandleMethod方法
        handlerMethod.getMethod().invoke(handlerMethod.getBean());
        stopwatch.stop();
        data.put("result", "success");
    }catch (Exception e){
        data.put("result", "error");
        data.put("exception", e.toString());
    }finally {
        data.put("cost", stopwatch.elapsed(TimeUnit.MILLISECONDS) + "ms");

    }
    // 返回Json视图
    return new ModelAndView(new MappingJackson2JsonView(), data);
}
 
源代码2 项目: proxyee-down   文件: RestExceptionHandler.java
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest,
    HttpServletResponse httpServletResponse, Object o, Exception e) {
  LOGGER.error("rest error:", e);
  ModelAndView modelAndView = new ModelAndView();
  try {
    ResultInfo resultInfo = new ResultInfo().setStatus(ResultStatus.ERROR.getCode())
        .setMsg(ResultInfo.MSG_ERROR);
    Map<String, Object> attr = JSON.parseObject(JSON.toJSONString(resultInfo), Map.class);
    MappingJackson2JsonView view = new MappingJackson2JsonView();
    view.setAttributesMap(attr);
    modelAndView.setView(view);
  } catch (Exception e1) {
    e1.printStackTrace();
  }
  return modelAndView;
}
 
@RequestMapping(value = "get_channel", method = RequestMethod.GET)
public @ResponseBody
ModelAndView getChannel(HttpSession session, HttpServletRequest request){
    ServletContext context = session.getServletContext();
    Integer subFlag = (Integer)request.getSession().getAttribute("sub_flag");
    if(subFlag == null){
        session.setAttribute("sub_flag", 1);
        context.setAttribute("onlineCount", (Integer)context.getAttribute("onlineCount") - 1);
    }
    Map<String, Object> result = new HashMap();
    result.put("msg", "success");
    result.put("rst", 0);
    Integer channel = (Integer) context.getAttribute("use_channel");
    if (channel == null){
        channel = 0;
    }
    result.put("data", channel);
    return new ModelAndView(new MappingJackson2JsonView(), result);
}
 
源代码4 项目: yfs   文件: ExceptionHandler.java
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
                                     Exception ex) {
    ModelAndView mv = new ModelAndView();
    MappingJackson2JsonView view = new MappingJackson2JsonView();
    Map<String, Object> attributes = new HashMap();
    if (ex instanceof MaxUploadSizeExceededException) {
        attributes.put("code", ResultCode.C403.code);
        attributes.put("msg", "Maximum upload size of " + ((MaxUploadSizeExceededException) ex).getMaxUploadSize() + " bytes exceeded");
        logger.warn(ex.getMessage());
    } else {
        attributes.put("code", ResultCode.C500.code);
        attributes.put("msg", ResultCode.C500.desc);
        logger.error("Internal server error", ex);
    }
    view.setAttributesMap(attributes);
    mv.setView(view);
    return mv;
}
 
@Bean
public ViewResolver contentNegotiatingViewResolver() {
    log.debug("Configuring the ContentNegotiatingViewResolver");
    ContentNegotiatingViewResolver viewResolver = new ContentNegotiatingViewResolver();
    List<ViewResolver> viewResolvers = new ArrayList<ViewResolver>();

    UrlBasedViewResolver urlBasedViewResolver = new UrlBasedViewResolver();
    urlBasedViewResolver.setViewClass(JstlView.class);
    urlBasedViewResolver.setPrefix("/WEB-INF/pages/");
    urlBasedViewResolver.setSuffix(".jsp");
    viewResolvers.add(urlBasedViewResolver);

    viewResolver.setViewResolvers(viewResolvers);

    List<View> defaultViews = new ArrayList<View>();
    defaultViews.add(new MappingJackson2JsonView());
    viewResolver.setDefaultViews(defaultViews);

    return viewResolver;
}
 
源代码6 项目: xmanager   文件: ExceptionResolver.java
@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());
	}
 
源代码7 项目: tinker-manager   文件: WebAppConfig.java
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) {
    e.printStackTrace();
    String messageStr = null;
    if (e instanceof BizException) {
        BizException bz = (BizException) e;
        messageStr = bz.getMessage();
    }

    if (messageStr == null || messageStr.trim().length() == 0) {
        messageStr = "系统异常";
    }

    RestResponse restR = new RestResponse();
    restR.setCode(-1);
    restR.setMessage(messageStr);
    if (HttpRequestUtils.isAjax(request)) {
        Map model = BeanMapConvertUtil.convertBean2Map(restR);
        if (logger.isInfoEnabled()) {
            logger.info(">>>>>resolveException ajax model: " + model);
        }
        return new ModelAndView(new MappingJackson2JsonView(), model);
    }

    return new ModelAndView("500", "restR", restR);
}
 
源代码8 项目: SENS   文件: GlobalExceptionHandler.java
/**
 * 获取其它异常。包括500
 *
 * @param e
 * @return
 * @throws Exception
 */
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest request,
                                        HttpServletResponse response,
                                        Exception e, Model model) throws IOException {
    e.printStackTrace();

    if (isAjax(request)) {
        ModelAndView mav = new ModelAndView();
        MappingJackson2JsonView view = new MappingJackson2JsonView();
        Map<String, Object> attributes = new HashMap<String, Object>();
        if (e instanceof UnauthorizedException) {
            attributes.put("msg", "没有权限");
        } else {
            attributes.put("msg", e.getMessage());
        }
        attributes.put("code", "0");
        view.setAttributesMap(attributes);
        mav.setView(view);
        return mav;
    }

    if (e instanceof UnauthorizedException) {
        //请登录
        log.error("无权访问", e);
        return new ModelAndView("common/error/403");
    }
    //其他异常
    String message = e.getMessage();
    model.addAttribute("code", 500);
    model.addAttribute("message", message);
    return new ModelAndView("common/error/500");
}
 
@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);
}
 
@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());
}
 
@Test
public void contentNegotiationAddsDefaultViewRegistrations() {
	MappingJackson2JsonView view1 = new MappingJackson2JsonView();
	this.registry.enableContentNegotiation(view1);

	ContentNegotiatingViewResolver resolver1 = checkAndGetResolver(ContentNegotiatingViewResolver.class);
	assertEquals(Arrays.asList(view1), resolver1.getDefaultViews());

	MarshallingView view2 = new MarshallingView();
	this.registry.enableContentNegotiation(view2);

	ContentNegotiatingViewResolver resolver2 = checkAndGetResolver(ContentNegotiatingViewResolver.class);
	assertEquals(Arrays.asList(view1, view2), resolver2.getDefaultViews());
	assertSame(resolver1, resolver2);
}
 
源代码12 项目: spring-analysis-note   文件: ViewResolutionTests.java
@Test
public void testJsonOnly() throws Exception {
	standaloneSetup(new PersonController()).setSingleView(new MappingJackson2JsonView()).build()
		.perform(get("/person/Corea"))
			.andExpect(status().isOk())
			.andExpect(content().contentType(MediaType.APPLICATION_JSON))
			.andExpect(jsonPath("$.person.name").value("Corea"));
}
 
@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);
}
 
@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());
}
 
@Test
public void contentNegotiationAddsDefaultViewRegistrations() {
	MappingJackson2JsonView view1 = new MappingJackson2JsonView();
	this.registry.enableContentNegotiation(view1);

	ContentNegotiatingViewResolver resolver1 = checkAndGetResolver(ContentNegotiatingViewResolver.class);
	assertEquals(Arrays.asList(view1), resolver1.getDefaultViews());

	MarshallingView view2 = new MarshallingView();
	this.registry.enableContentNegotiation(view2);

	ContentNegotiatingViewResolver resolver2 = checkAndGetResolver(ContentNegotiatingViewResolver.class);
	assertEquals(Arrays.asList(view1, view2), resolver2.getDefaultViews());
	assertSame(resolver1, resolver2);
}
 
@Test
public void testJsonOnly() throws Exception {
	standaloneSetup(new PersonController()).setSingleView(new MappingJackson2JsonView()).build()
		.perform(get("/person/Corea"))
			.andExpect(status().isOk())
			.andExpect(content().contentType(MediaType.APPLICATION_JSON))
			.andExpect(jsonPath("$.person.name").value("Corea"));
}
 
源代码17 项目: apm-agent-java   文件: ViewRenderSubtypeTest.java
@Test
void testGetUnknownSubtypes() {
    assertThat(getSubtype(GroovyMarkupView.class.getName())).isEqualTo("GroovyMarkup");
    assertThat(getSubtype(FreeMarkerView.class.getName())).isEqualTo("FreeMarker");
    assertThat(getSubtype(MappingJackson2JsonView.class.getName())).isEqualTo("MappingJackson2Json");
    assertThat(getSubtype(JadeView.class.getName())).isEqualTo("Jade");
    assertThat(getSubtype(InternalResourceView.class.getName())).isEqualTo("InternalResource");
    assertThat(getSubtype(ThymeleafView.class.getName())).isEqualTo("Thymeleaf");
}
 
@RequestMapping(value = "set_channel", method = RequestMethod.GET)
public @ResponseBody
ModelAndView setChannel(@RequestParam("use_channel")Integer channel, HttpSession session){
    ServletContext context = session.getServletContext();
    Map<String, Object> result = new HashMap();
    result.put("msg", "success");
    result.put("rst", 0);
    result.put("data", channel);
    context.setAttribute("use_channel", channel);
    return new ModelAndView(new MappingJackson2JsonView(), result);
}
 
源代码19 项目: blade-tool   文件: BladeErrorController.java
@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);
}
 
源代码20 项目: mmall20180107   文件: ExceptionReslover.java
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {

    logger.info(httpServletRequest.getRequestURI()+"Exception:",e);
    ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView());

    modelAndView.addObject("status",Const.ResponseCode.ERROR);
    modelAndView.addObject("msg","接口异常,详情请查看日志中的异常信息");
    modelAndView.addObject("data",e.toString());

    return modelAndView;
}
 
@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<JacksonViewBean>(bean, HttpStatus.OK);
}
 
@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());
}
 
@Test
public void contentNegotiationAddsDefaultViewRegistrations() {
	MappingJackson2JsonView view1 = new MappingJackson2JsonView();
	this.registry.enableContentNegotiation(view1);

	ContentNegotiatingViewResolver resolver1 = checkAndGetResolver(ContentNegotiatingViewResolver.class);
	assertEquals(Arrays.asList(view1), resolver1.getDefaultViews());

	MarshallingView view2 = new MarshallingView();
	this.registry.enableContentNegotiation(view2);

	ContentNegotiatingViewResolver resolver2 = checkAndGetResolver(ContentNegotiatingViewResolver.class);
	assertEquals(Arrays.asList(view1, view2), resolver2.getDefaultViews());
	assertSame(resolver1, resolver2);
}
 
@Test
public void testJsonOnly() throws Exception {

	standaloneSetup(new PersonController()).setSingleView(new MappingJackson2JsonView()).build()
		.perform(get("/person/Corea"))
			.andExpect(status().isOk())
			.andExpect(content().contentType(MediaType.APPLICATION_JSON))
			.andExpect(jsonPath("$.person.name").value("Corea"));
}
 
@Test
public void testContentNegotiation() throws Exception {

	Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
	marshaller.setClassesToBeBound(Person.class);

	List<View> viewList = new ArrayList<View>();
	viewList.add(new MappingJackson2JsonView());
	viewList.add(new MarshallingView(marshaller));

	ContentNegotiationManager manager = new ContentNegotiationManager(
			new HeaderContentNegotiationStrategy(), new FixedContentNegotiationStrategy(MediaType.TEXT_HTML));

	ContentNegotiatingViewResolver cnViewResolver = new ContentNegotiatingViewResolver();
	cnViewResolver.setDefaultViews(viewList);
	cnViewResolver.setContentNegotiationManager(manager);
	cnViewResolver.afterPropertiesSet();

	MockMvc mockMvc =
		standaloneSetup(new PersonController())
			.setViewResolvers(cnViewResolver, new InternalResourceViewResolver())
			.build();

	mockMvc.perform(get("/person/Corea"))
		.andExpect(status().isOk())
		.andExpect(model().size(1))
		.andExpect(model().attributeExists("person"))
		.andExpect(forwardedUrl("person/show"));

	mockMvc.perform(get("/person/Corea").accept(MediaType.APPLICATION_JSON))
		.andExpect(status().isOk())
		.andExpect(content().contentType(MediaType.APPLICATION_JSON))
		.andExpect(jsonPath("$.person.name").value("Corea"));

	mockMvc.perform(get("/person/Corea").accept(MediaType.APPLICATION_XML))
		.andExpect(status().isOk())
		.andExpect(content().contentType(MediaType.APPLICATION_XML))
		.andExpect(xpath("/person/name/text()").string(equalTo("Corea")));
}
 
/**
 * Reusable static method for generating a ModelAndView that will be serialized to a JSON representation of the
 * DefaultErrorContractDTO.
 *
 * @return A ModelAndView that will be serialized to a JSON representation of the DefaultErrorContractDTO. (NOTE:
 * make sure the DefaultErrorContractDTO is FULLY populated before calling this method! Changes to the
 * DefaultErrorContractDTO after calling this method may not be reflected in the returned ModelAndView).
 */
public ModelAndView generateModelAndViewForErrorResponse(
    DefaultErrorContractDTO errorContractDTO, int httpStatusCode, Collection<ApiError> rawFilteredApiErrors,
    Throwable originalException, RequestInfoForLogging request
) {
    MappingJackson2JsonView view = new MappingJackson2JsonView();
    view.setExtractValueFromSingleKeyModel(true);
    view.setObjectMapper(getObjectMapperForJsonErrorResponseSerialization(
        errorContractDTO, httpStatusCode, rawFilteredApiErrors, originalException, request
    ));
    ModelAndView mv = new ModelAndView(view);
    mv.addObject(errorContractDTO);
    return mv;
}
 
@Test
public void generateLastDitchFallbackErrorResponseInfo_returns_expected_value() throws JsonProcessingException {
    // given
    Exception ex = new Exception("kaboom");
    RequestInfoForLogging reqMock = mock(RequestInfoForLogging.class);
    String errorId = UUID.randomUUID().toString();
    Map<String, List<String>> headersMap = MapBuilder.builder("error_uid", singletonList(errorId)).build();

    ApiError expectedGenericError = testProjectApiErrors.getGenericServiceError();
    int expectedHttpStatusCode = expectedGenericError.getHttpStatusCode();
    Map<String, List<String>> expectedHeadersMap = new HashMap<>(headersMap);
    String expectedBodyPayload = JsonUtilWithDefaultErrorContractDTOSupport.writeValueAsString(
        new DefaultErrorContractDTO(errorId, singletonList(expectedGenericError))
    );

    // when
    ErrorResponseInfo<ModelAndView> response = handlerSpy
        .generateLastDitchFallbackErrorResponseInfo(ex, reqMock, errorId, headersMap);

    // then
    assertThat(response.httpStatusCode).isEqualTo(expectedHttpStatusCode);
    assertThat(response.headersToAddToResponse).isEqualTo(expectedHeadersMap);
    assertThat(response.frameworkRepresentationObj.getView()).isInstanceOf(MappingJackson2JsonView.class);
    ObjectMapper objectMapperUsed = ((MappingJackson2JsonView)response.frameworkRepresentationObj.getView()).getObjectMapper();
    assertThat(objectMapperUsed).isSameAs(JsonUtilWithDefaultErrorContractDTOSupport.DEFAULT_SMART_MAPPER);
    assertThat(response.frameworkRepresentationObj.getModel()).hasSize(1);
    Object modelObj = response.frameworkRepresentationObj.getModel().values().iterator().next();
    assertThat(modelObj).isInstanceOf(DefaultErrorContractDTO.class);
    assertThat(objectMapperUsed.writeValueAsString(modelObj)).isEqualTo(expectedBodyPayload);
}
 
源代码28 项目: disconf   文件: JsonObjectUtils.java
/**
 */
public static ModelAndView JsonObjectError2ModelView(JsonObjectError json) {

    ModelAndView model = new ModelAndView(new MappingJackson2JsonView());
    model.addObject(FrontEndInterfaceConstant.RETURN_SUCCESS, json.getSuccess());
    model.addObject(FrontEndInterfaceConstant.RETURN_MESSAGE, json.getMessage());
    model.addObject(FrontEndInterfaceConstant.STATUS_CODE_STRING, json.getStatus());
    model.addObject(FrontEndInterfaceConstant.SESSION_ID, json.getSessionId());

    return model;
}
 
源代码29 项目: disconf   文件: JsonObjectUtils.java
/**
 */
public static ModelAndView JsonObjectError2ModelView(JsonObjectError json) {

    ModelAndView model = new ModelAndView(new MappingJackson2JsonView());
    model.addObject(FrontEndInterfaceConstant.RETURN_SUCCESS, json.getSuccess());
    model.addObject(FrontEndInterfaceConstant.RETURN_MESSAGE, json.getMessage());
    model.addObject(FrontEndInterfaceConstant.STATUS_CODE_STRING, json.getStatus());
    model.addObject(FrontEndInterfaceConstant.SESSION_ID, json.getSessionId());

    return model;
}
 
源代码30 项目: molgenis   文件: MolgenisRControllerTest.java
@BeforeEach
void beforeTest() {
  MolgenisRController controller = new MolgenisRController();
  mockMvc =
      MockMvcBuilders.standaloneSetup(controller)
          // use a json view to easily test the model values that get set
          .setSingleView(new MappingJackson2JsonView())
          .setCustomArgumentResolvers(new TokenExtractor())
          .build();
}
 
 同包方法