Skip to content

Commit da1fafa

Browse files
committed
Fix issue in MappingJacksonJsonView
Issue: SPR-10752
1 parent 90c4712 commit da1fafa

File tree

4 files changed

+38
-22
lines changed

4 files changed

+38
-22
lines changed

spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJackson2JsonView.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,21 @@
2323
import java.util.HashMap;
2424
import java.util.Map;
2525
import java.util.Set;
26+
2627
import javax.servlet.http.HttpServletRequest;
2728
import javax.servlet.http.HttpServletResponse;
2829

29-
import com.fasterxml.jackson.core.JsonEncoding;
30-
import com.fasterxml.jackson.core.JsonGenerator;
31-
import com.fasterxml.jackson.databind.ObjectMapper;
32-
import com.fasterxml.jackson.databind.SerializationFeature;
33-
3430
import org.springframework.util.Assert;
3531
import org.springframework.util.CollectionUtils;
3632
import org.springframework.validation.BindingResult;
3733
import org.springframework.web.servlet.View;
3834
import org.springframework.web.servlet.view.AbstractView;
3935

36+
import com.fasterxml.jackson.core.JsonEncoding;
37+
import com.fasterxml.jackson.core.JsonGenerator;
38+
import com.fasterxml.jackson.databind.ObjectMapper;
39+
import com.fasterxml.jackson.databind.SerializationFeature;
40+
4041
/**
4142
* Spring MVC {@link View} that renders JSON content by serializing the model for the current request
4243
* using <a href="http://jackson.codehaus.org/">Jackson 2.x's</a> {@link ObjectMapper}.
@@ -141,7 +142,7 @@ public void setJsonPrefix(String jsonPrefix) {
141142
* @see #setJsonPrefix
142143
*/
143144
public void setPrefixJson(boolean prefixJson) {
144-
this.jsonPrefix = "{} && ";
145+
this.jsonPrefix = prefixJson ? "{} && " : "";
145146
}
146147

147148
/**

spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJacksonJsonView.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323
import java.util.HashMap;
2424
import java.util.Map;
2525
import java.util.Set;
26+
2627
import javax.servlet.http.HttpServletRequest;
2728
import javax.servlet.http.HttpServletResponse;
2829

2930
import org.codehaus.jackson.JsonEncoding;
3031
import org.codehaus.jackson.JsonGenerator;
3132
import org.codehaus.jackson.map.ObjectMapper;
3233
import org.codehaus.jackson.map.SerializationConfig;
33-
3434
import org.springframework.util.Assert;
3535
import org.springframework.util.CollectionUtils;
3636
import org.springframework.validation.BindingResult;
@@ -141,7 +141,7 @@ public void setJsonPrefix(String jsonPrefix) {
141141
* @see #setJsonPrefix
142142
*/
143143
public void setPrefixJson(boolean prefixJson) {
144-
this.jsonPrefix = "{} && ";
144+
this.jsonPrefix = prefixJson ? "{} && " : "";
145145
}
146146

147147
/**

spring-webmvc/src/test/java/org/springframework/web/servlet/view/json/MappingJackson2JsonViewTests.java

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,31 @@
2323
import java.util.Map;
2424
import java.util.Set;
2525

26-
import com.fasterxml.jackson.core.JsonGenerator;
27-
import com.fasterxml.jackson.databind.JavaType;
28-
import com.fasterxml.jackson.databind.JsonMappingException;
29-
import com.fasterxml.jackson.databind.JsonSerializer;
30-
import com.fasterxml.jackson.databind.ObjectMapper;
31-
import com.fasterxml.jackson.databind.SerializerProvider;
32-
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
33-
import com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig;
34-
import com.fasterxml.jackson.databind.ser.BeanSerializerFactory;
35-
import com.fasterxml.jackson.databind.ser.SerializerFactory;
3626
import org.junit.Before;
3727
import org.junit.Test;
3828
import org.mozilla.javascript.Context;
3929
import org.mozilla.javascript.ContextFactory;
4030
import org.mozilla.javascript.ScriptableObject;
41-
4231
import org.springframework.http.MediaType;
4332
import org.springframework.mock.web.test.MockHttpServletRequest;
4433
import org.springframework.mock.web.test.MockHttpServletResponse;
4534
import org.springframework.ui.ModelMap;
4635
import org.springframework.validation.BindingResult;
4736
import org.springframework.web.servlet.View;
4837

38+
import com.fasterxml.jackson.core.JsonGenerator;
39+
import com.fasterxml.jackson.databind.JavaType;
40+
import com.fasterxml.jackson.databind.JsonMappingException;
41+
import com.fasterxml.jackson.databind.JsonSerializer;
42+
import com.fasterxml.jackson.databind.ObjectMapper;
43+
import com.fasterxml.jackson.databind.SerializerProvider;
44+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
45+
import com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig;
46+
import com.fasterxml.jackson.databind.ser.BeanSerializerFactory;
47+
import com.fasterxml.jackson.databind.ser.SerializerFactory;
48+
4949
import static org.junit.Assert.*;
50-
import static org.mockito.BDDMockito.*;
50+
import static org.mockito.Mockito.*;
5151

5252
/**
5353
* @author Jeremy Grelle
@@ -174,6 +174,14 @@ public void renderWithPrettyPrint() throws Exception {
174174
public void renderSimpleBeanPrefixed() throws Exception {
175175
view.setPrefixJson(true);
176176
renderSimpleBean();
177+
assertTrue(response.getContentAsString().startsWith("{} && "));
178+
}
179+
180+
@Test
181+
public void renderSimpleBeanNotPrefixed() throws Exception {
182+
view.setPrefixJson(false);
183+
renderSimpleBean();
184+
assertFalse(response.getContentAsString().startsWith("{} && "));
177185
}
178186

179187
@Test

spring-webmvc/src/test/java/org/springframework/web/servlet/view/json/MappingJacksonJsonViewTests.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,13 @@
3939
import org.mozilla.javascript.Context;
4040
import org.mozilla.javascript.ContextFactory;
4141
import org.mozilla.javascript.ScriptableObject;
42-
4342
import org.springframework.mock.web.test.MockHttpServletRequest;
4443
import org.springframework.mock.web.test.MockHttpServletResponse;
4544
import org.springframework.ui.ModelMap;
4645
import org.springframework.validation.BindingResult;
4746

4847
import static org.junit.Assert.*;
49-
import static org.mockito.BDDMockito.*;
48+
import static org.mockito.Mockito.*;
5049

5150
/**
5251
* @author Jeremy Grelle
@@ -158,6 +157,14 @@ public void renderWithPrettyPrint() throws Exception {
158157
public void renderSimpleBeanPrefixed() throws Exception {
159158
view.setPrefixJson(true);
160159
renderSimpleBean();
160+
assertTrue(response.getContentAsString().startsWith("{} && "));
161+
}
162+
163+
@Test
164+
public void renderSimpleBeanNotPrefixed() throws Exception {
165+
view.setPrefixJson(false);
166+
renderSimpleBean();
167+
assertFalse(response.getContentAsString().startsWith("{} && "));
161168
}
162169

163170
@Test

0 commit comments

Comments
 (0)