From cc3239987853251f825054f5da97fd24630911a0 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Mon, 30 Nov 2009 10:29:27 +0000 Subject: [PATCH] SPR-6470 - Make filterModel() in MappingJacksonJsonView more lenient --- .../servlet/view/json/MappingJacksonJsonView.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 69f2e75697b..d1e778aadff 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();