diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/json/MappingJacksonJsonView.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/json/MappingJacksonJsonView.java index 69f2e75697bcb35545f0b89a4dd8b3220596c0df..d1e778aadff6a0d240375eb3601701996e6459ef 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/json/MappingJacksonJsonView.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/view/json/MappingJacksonJsonView.java @@ -119,22 +119,26 @@ public class MappingJacksonJsonView extends AbstractView { protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception { - model = filterModel(model); + Object value = filterModel(model); JsonGenerator generator = objectMapper.getJsonFactory().createJsonGenerator(response.getOutputStream(), encoding); if (prefixJson) { generator.writeRaw("{} && "); } - objectMapper.writeValue(generator, model); + objectMapper.writeValue(generator, value); } /** - * Filters out undesired attributes from the given model. + * Filters out undesired attributes from the given model. The return value can be either another {@link Map}, or a + * single value object. * *

Default implementation removes {@link BindingResult} instances and entries not included in the {@link * #setRenderedAttributes(Set) renderedAttributes} property. + * + * @param model the model, as passed on to {@link #renderMergedOutputModel} + * @return the object to be rendered */ - protected Map filterModel(Map model) { + protected Object filterModel(Map model) { Map result = new HashMap(model.size()); Set renderedAttributes = !CollectionUtils.isEmpty(this.renderedAttributes) ? this.renderedAttributes : model.keySet();