Example usage for org.springframework.web.servlet.view.xml MarshallingView setModelKey

List of usage examples for org.springframework.web.servlet.view.xml MarshallingView setModelKey

Introduction

In this page you can find the example usage for org.springframework.web.servlet.view.xml MarshallingView setModelKey.

Prototype

public void setModelKey(String modelKey) 

Source Link

Document

Set the name of the model key that represents the object to be marshalled.

Usage

From source file:org.bremersee.common.spring.autoconfigure.WebMvcExceptionResolver.java

@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
        Exception ex) {//from  ww  w  .j  av a2  s .  co  m

    if (ex == null || !isRestController(handler)) {
        return null;
    }

    final Object dto = getExceptionMapper(handler).toDto(ex);
    if (dto == null) {
        return null;
    }

    ModelAndView mav;

    String acceptStr = request.getHeader("Accept") == null ? "" : request.getHeader("Accept").toLowerCase();
    if (log.isDebugEnabled()) {
        log.debug("Handler [" + handler + "] got accept header [" + acceptStr + "] from client.");
    }
    if (acceptStr.contains("application/xml") || acceptStr.contains("text/xml")) {

        MarshallingView mv = new MarshallingView(marshaller);
        mv.setModelKey(DTO_KEY);
        mav = new ModelAndView(mv, DTO_KEY, dto);
        response.setContentType(MediaType.APPLICATION_XML_VALUE);

    } else {

        final MappingJackson2JsonView mjv = new MappingJackson2JsonView(objectMapper);
        mav = new ModelAndView(mjv);
        final Map<String, Object> map = toJsonMap(dto);
        mav.addAllObjects(map);
        if (acceptStr.contains("text/plain")) {
            response.setContentType(MediaType.TEXT_PLAIN_VALUE);
        } else {
            response.setContentType(MediaType.APPLICATION_JSON_VALUE);
        }
    }

    Integer statusCode = determineStatusCode(ex);
    applyStatusCodeIfPossible(request, response, statusCode);

    return mav;
}