小米max在苹果通话时怎么录音 碰到脸颊就没了声音是怎么回事

org.springframework.web.servlet.view.json.MappingJackson2JsonView & apiwave
org.springframework.web.servlet.view.json.MappingJackson2JsonView
@@ -21,6 +21,7 @@ import java.lang.reflect.M
import java.util.ArrayL
import java.util.L
+import com.fasterxml.jackson.annotation.JsonV
import org.junit.B
import org.junit.T
@@ -47,6 +48,8 @@ import org.springframework.web.context.request.NativeWebR
import org.springframework.web.context.request.ServletWebR
import org.springframework.web.method.HandlerM
import org.springframework.web.method.support.ModelAndViewC
+import org.springframework.web.servlet.ModelAndV
+import org.springframework.web.servlet.view.json.MappingJackson2JsonV
import static org.junit.Assert.*;
@@ -283,6 +286,42 @@ public class RequestResponseBodyMethodProcessorTests {
assertTrue(&Failed to recognize type-level @RestController&, processor.supportsReturnType(returnType));
+ public void handleResponseBodyJacksonView() throws Exception {
Method method = JacksonViewController.class.getMethod(&handleResponseBody&);
HandlerMethod handlerMethod = new HandlerMethod(new JacksonViewController(), method);
MethodParameter methodReturnType = handlerMethod.getReturnType();
List&HttpMessageConverter&?&& converters = new ArrayList&HttpMessageConverter&?&&();
converters.add(new MappingJackson2HttpMessageConverter());
RequestResponseBodyMethodProcessor processor = new RequestResponseBodyMethodProcessor(converters);
processor.handleReturnValue(new JacksonViewController().handleResponseBody(), methodReturnType, mavContainer, webRequest);
String content = servletResponse.getContentAsString();
assertFalse(content.contains(&\&withView1\&:\&with\&&));
assertTrue(content.contains(&\&withView2\&:\&with\&&));
assertTrue(content.contains(&\&withoutView\&:\&without\&&));
+ public void handleResponseBodyJacksonViewAndModelAndView() throws Exception {
Method method = JacksonViewController.class.getMethod(&handleResponseBodyWithModelAndView&);
HandlerMethod handlerMethod = new HandlerMethod(new JacksonViewController(), method);
MethodParameter methodReturnType = handlerMethod.getReturnType();
List&HttpMessageConverter&?&& converters = new ArrayList&HttpMessageConverter&?&&();
converters.add(new MappingJackson2HttpMessageConverter());
RequestResponseBodyMethodProcessor processor = new RequestResponseBodyMethodProcessor(converters);
processor.handleReturnValue(new JacksonViewController().handleResponseBody(), methodReturnType, mavContainer, webRequest);
String content = servletResponse.getContentAsString();
assertFalse(content.contains(&\&withView1\&:\&with\&&));
assertTrue(content.contains(&\&withView2\&:\&with\&&));
assertTrue(content.contains(&\&withoutView\&:\&without\&&));
public String handle(
@RequestBody List&SimpleBean& list,
@@ -373,4 +412,69 @@ public class RequestResponseBodyMethodProcessorTests {
+ private interface MyJacksonView1 {};
+ private interface MyJacksonView2 {};
+ private static class JacksonViewBean {
@JsonView(MyJacksonView1.class)
private String withView1;
@JsonView(MyJacksonView2.class)
private String withView2;
private String withoutV
public String getWithView1() {
return withView1;
public void setWithView1(String withView1) {
this.withView1 = withView1;
public String getWithView2() {
return withView2;
public void setWithView2(String withView2) {
this.withView2 = withView2;
public String getWithoutView() {
return withoutV
public void setWithoutView(String withoutView) {
this.withoutView = withoutV
+ private static class JacksonViewController {
@RequestMapping
@ResponseBody
@JsonView(MyJacksonView2.class)
public JacksonViewBean handleResponseBody() {
JacksonViewBean bean = new JacksonViewBean();
bean.setWithView1(&with&);
bean.setWithView2(&with&);
bean.setWithoutView(&without&);
@RequestMapping
@JsonView(MyJacksonView2.class)
public ModelAndView handleResponseBodyWithModelAndView() {
JacksonViewBean bean = new JacksonViewBean();
bean.setWithView1(&with&);
bean.setWithView2(&with&);
bean.setWithoutView(&without&);
ModelAndView mav = new ModelAndView(new MappingJackson2JsonView());
mav.addObject(&bean&, bean);
@@ -21,6 +21,7 @@ import java.lang.reflect.M
import java.util.ArrayL
import java.util.L
+import com.fasterxml.jackson.annotation.JsonV
import org.junit.B
import org.junit.T
@@ -47,6 +48,8 @@ import org.springframework.web.context.request.NativeWebR
import org.springframework.web.context.request.ServletWebR
import org.springframework.web.method.HandlerM
import org.springframework.web.method.support.ModelAndViewC
+import org.springframework.web.servlet.ModelAndV
+import org.springframework.web.servlet.view.json.MappingJackson2JsonV
import static org.junit.Assert.*;
@@ -283,6 +286,42 @@ public class RequestResponseBodyMethodProcessorTests {
assertTrue(&Failed to recognize type-level @RestController&, processor.supportsReturnType(returnType));
+ public void handleResponseBodyJacksonView() throws Exception {
Method method = JacksonViewController.class.getMethod(&handleResponseBody&);
HandlerMethod handlerMethod = new HandlerMethod(new JacksonViewController(), method);
MethodParameter methodReturnType = handlerMethod.getReturnType();
List&HttpMessageConverter&?&& converters = new ArrayList&HttpMessageConverter&?&&();
converters.add(new MappingJackson2HttpMessageConverter());
RequestResponseBodyMethodProcessor processor = new RequestResponseBodyMethodProcessor(converters);
processor.handleReturnValue(new JacksonViewController().handleResponseBody(), methodReturnType, mavContainer, webRequest);
String content = servletResponse.getContentAsString();
assertFalse(content.contains(&\&withView1\&:\&with\&&));
assertTrue(content.contains(&\&withView2\&:\&with\&&));
assertTrue(content.contains(&\&withoutView\&:\&without\&&));
+ public void handleResponseBodyJacksonViewAndModelAndView() throws Exception {
Method method = JacksonViewController.class.getMethod(&handleResponseBodyWithModelAndView&);
HandlerMethod handlerMethod = new HandlerMethod(new JacksonViewController(), method);
MethodParameter methodReturnType = handlerMethod.getReturnType();
List&HttpMessageConverter&?&& converters = new ArrayList&HttpMessageConverter&?&&();
converters.add(new MappingJackson2HttpMessageConverter());
RequestResponseBodyMethodProcessor processor = new RequestResponseBodyMethodProcessor(converters);
processor.handleReturnValue(new JacksonViewController().handleResponseBody(), methodReturnType, mavContainer, webRequest);
String content = servletResponse.getContentAsString();
assertFalse(content.contains(&\&withView1\&:\&with\&&));
assertTrue(content.contains(&\&withView2\&:\&with\&&));
assertTrue(content.contains(&\&withoutView\&:\&without\&&));
public String handle(
@RequestBody List&SimpleBean& list,
@@ -373,4 +412,69 @@ public class RequestResponseBodyMethodProcessorTests {
+ private interface MyJacksonView1 {};
+ private interface MyJacksonView2 {};
+ private static class JacksonViewBean {
@JsonView(MyJacksonView1.class)
private String withView1;
@JsonView(MyJacksonView2.class)
private String withView2;
private String withoutV
public String getWithView1() {
return withView1;
public void setWithView1(String withView1) {
this.withView1 = withView1;
public String getWithView2() {
return withView2;
public void setWithView2(String withView2) {
this.withView2 = withView2;
public String getWithoutView() {
return withoutV
public void setWithoutView(String withoutView) {
this.withoutView = withoutV
+ private static class JacksonViewController {
@RequestMapping
@ResponseBody
@JsonView(MyJacksonView2.class)
public JacksonViewBean handleResponseBody() {
JacksonViewBean bean = new JacksonViewBean();
bean.setWithView1(&with&);
bean.setWithView2(&with&);
bean.setWithoutView(&without&);
@RequestMapping
@JsonView(MyJacksonView2.class)
public ModelAndView handleResponseBodyWithModelAndView() {
JacksonViewBean bean = new JacksonViewBean();
bean.setWithView1(&with&);
bean.setWithView2(&with&);
bean.setWithoutView(&without&);
ModelAndView mav = new ModelAndView(new MappingJackson2JsonView());
mav.addObject(&bean&, bean);
@@ -0,0 +1,205 @@
+ * Copyright
the original author or authors.
+ * Licensed under the Apache License, Version 2.0 (the &License&);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &AS IS& BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+package org.springframework.web.servlet.config.
+import org.junit.B
+import org.junit.T
+import org.springframework.beans.DirectFieldA
+import org.springframework.web.servlet.view.BeanNameViewR
+import org.springframework.web.servlet.view.ContentNegotiatingViewR
+import org.springframework.web.servlet.view.InternalResourceViewR
+import org.springframework.web.servlet.view.freemarker.FreeMarkerC
+import org.springframework.web.servlet.view.freemarker.FreeMarkerViewR
+import org.springframework.web.servlet.view.json.MappingJackson2JsonV
+import org.springframework.web.servlet.view.tiles3.TilesC
+import org.springframework.web.servlet.view.tiles3.TilesViewR
+import org.springframework.web.servlet.view.velocity.VelocityC
+import org.springframework.web.servlet.view.velocity.VelocityViewR
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertE
+ * Test fixture with a {@link ViewResolutionRegistry}.
+ * @author Sebastien Deleuze
+public class ViewResolutionRegistryTests {
+ private ViewResolutionR
+ public void setUp() {
registry = new ViewResolutionRegistry();
+ public void noViewResolution() {
assertNotNull(registry.getViewResolvers());
assertEquals(0, registry.getViewResolvers().size());
+ public void customViewResolution() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix(&/&);
viewResolver.setSuffix(&.jsp&);
registry.addViewResolver(viewResolver);
assertEquals(InternalResourceViewResolver.class, registry.getViewResolvers().get(0).getClass());
InternalResourceViewResolver resolver = (InternalResourceViewResolver)registry.getViewResolvers().get(0);
DirectFieldAccessor resolverDirectFieldAccessor =
new DirectFieldAccessor(resolver);
assertEquals(&/&, resolverDirectFieldAccessor.getPropertyValue(&prefix&));
assertEquals(&.jsp&, resolverDirectFieldAccessor.getPropertyValue(&suffix&));
+ public void beanNameViewResolution() {
registry.beanName();
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(BeanNameViewResolver.class, registry.getViewResolvers().get(0).getClass());
+ public void jspViewResolution() {
registry.jsp(&/&, &.jsp&);
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(InternalResourceViewResolver.class, registry.getViewResolvers().get(0).getClass());
InternalResourceViewResolver resolver = (InternalResourceViewResolver)registry.getViewResolvers().get(0);
DirectFieldAccessor resolverDirectFieldAccessor =
new DirectFieldAccessor(resolver);
assertEquals(&/&, resolverDirectFieldAccessor.getPropertyValue(&prefix&));
assertEquals(&.jsp&, resolverDirectFieldAccessor.getPropertyValue(&suffix&));
+ public void defaultJspViewResolution() {
registry.jsp();
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(InternalResourceViewResolver.class, registry.getViewResolvers().get(0).getClass());
InternalResourceViewResolver resolver = (InternalResourceViewResolver)registry.getViewResolvers().get(0);
DirectFieldAccessor resolverDirectFieldAccessor =
new DirectFieldAccessor(resolver);
assertEquals(&/WEB-INF/&, resolverDirectFieldAccessor.getPropertyValue(&prefix&));
assertEquals(&.jsp&, resolverDirectFieldAccessor.getPropertyValue(&suffix&));
+ public void tilesViewResolution() {
registry.tiles().checkRefresh(true).definition(&def1&).definition(&def2&);
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(TilesViewResolver.class, registry.getViewResolvers().get(0).getClass());
assertNotNull(registry.getTilesConfigurer());
TilesConfigurer configurer = registry.getTilesConfigurer();
DirectFieldAccessor configurerDirectFieldAccessor =
new DirectFieldAccessor(configurer);
assertTrue((boolean) configurerDirectFieldAccessor.getPropertyValue(&checkRefresh&));
assertNotNull(configurerDirectFieldAccessor.getPropertyValue(&definitions&));
String[] definitions = (String[])configurerDirectFieldAccessor.getPropertyValue(&definitions&);
assertEquals(2, definitions.length);
assertEquals(&def1&, definitions[0]);
assertEquals(&def2&, definitions[1]);
+ public void velocityViewResolution() {
registry.velocity().prefix(&/&).suffix(&.vm&).cache(true).resourceLoaderPath(&testResourceLoaderPath&);
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(VelocityViewResolver.class, registry.getViewResolvers().get(0).getClass());
VelocityViewResolver resolver = (VelocityViewResolver)registry.getViewResolvers().get(0);
DirectFieldAccessor resolverDirectFieldAccessor =
new DirectFieldAccessor(resolver);
assertEquals(&/&, resolverDirectFieldAccessor.getPropertyValue(&prefix&));
assertEquals(&.vm&, resolverDirectFieldAccessor.getPropertyValue(&suffix&));
assertEquals(1024, resolverDirectFieldAccessor.getPropertyValue(&cacheLimit&));
assertNotNull(registry.getVelocityConfigurer());
VelocityConfigurer configurer = registry.getVelocityConfigurer();
DirectFieldAccessor configurerDirectFieldAccessor =
new DirectFieldAccessor(configurer);
assertEquals(&testResourceLoaderPath&, configurerDirectFieldAccessor.getPropertyValue(&resourceLoaderPath&));
+ public void defaultVelocityViewResolution() {
registry.velocity();
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(VelocityViewResolver.class, registry.getViewResolvers().get(0).getClass());
VelocityViewResolver resolver = (VelocityViewResolver)registry.getViewResolvers().get(0);
DirectFieldAccessor resolverDirectFieldAccessor =
new DirectFieldAccessor(resolver);
assertEquals(&&, resolverDirectFieldAccessor.getPropertyValue(&prefix&));
assertEquals(&.vm&, resolverDirectFieldAccessor.getPropertyValue(&suffix&));
assertNotNull(registry.getVelocityConfigurer());
VelocityConfigurer configurer = registry.getVelocityConfigurer();
DirectFieldAccessor configurerDirectFieldAccessor =
new DirectFieldAccessor(configurer);
assertEquals(&/WEB-INF/&, configurerDirectFieldAccessor.getPropertyValue(&resourceLoaderPath&));
+ public void freeMarkerViewResolution() {
registry.freemarker().prefix(&/&).suffix(&.fmt&).cache(false).templateLoaderPath(&path1&, &path2&);
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(FreeMarkerViewResolver.class, registry.getViewResolvers().get(0).getClass());
FreeMarkerViewResolver resolver = (FreeMarkerViewResolver)registry.getViewResolvers().get(0);
DirectFieldAccessor resolverDirectFieldAccessor =
new DirectFieldAccessor(resolver);
assertEquals(&/&, resolverDirectFieldAccessor.getPropertyValue(&prefix&));
assertEquals(&.fmt&, resolverDirectFieldAccessor.getPropertyValue(&suffix&));
assertEquals(0, resolverDirectFieldAccessor.getPropertyValue(&cacheLimit&));
assertNotNull(registry.getFreeMarkerConfigurer());
FreeMarkerConfigurer configurer = registry.getFreeMarkerConfigurer();
DirectFieldAccessor configurerDirectFieldAccessor =
new DirectFieldAccessor(configurer);
assertNotNull(configurerDirectFieldAccessor.getPropertyValue(&templateLoaderPaths&));
String[] templateLoaderPaths = (String[])configurerDirectFieldAccessor.getPropertyValue(&templateLoaderPaths&);
assertEquals(2, templateLoaderPaths.length);
assertEquals(&path1&, templateLoaderPaths[0]);
assertEquals(&path2&, templateLoaderPaths[1]);
+ public void defaultFreeMarkerViewResolution() {
registry.freemarker();
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(FreeMarkerViewResolver.class, registry.getViewResolvers().get(0).getClass());
FreeMarkerViewResolver resolver = (FreeMarkerViewResolver)registry.getViewResolvers().get(0);
DirectFieldAccessor resolverDirectFieldAccessor =
new DirectFieldAccessor(resolver);
assertEquals(&&, resolverDirectFieldAccessor.getPropertyValue(&prefix&));
assertEquals(&.ftl&, resolverDirectFieldAccessor.getPropertyValue(&suffix&));
DirectFieldAccessor configurerDirectFieldAccessor =
new DirectFieldAccessor(registry.getFreeMarkerConfigurer());
assertArrayEquals(new String[]{&/WEB-INF/&}, (String[])configurerDirectFieldAccessor.getPropertyValue(&templateLoaderPaths&));
+ public void contentNegotiatingViewResolution() {
registry.contentNegotiating().useNotAcceptable(false).defaultViews(new MappingJackson2JsonView());
assertNotNull(registry.getViewResolvers());
assertEquals(1, registry.getViewResolvers().size());
assertEquals(ContentNegotiatingViewResolver.class, registry.getViewResolvers().get(0).getClass());
+ public void multipleViewResolutions() {
registry.jsp().and().beanName();
assertNotNull(registry.getViewResolvers());
assertEquals(2, registry.getViewResolvers().size());
(C) apiwave 2015springmvc(12)
1:&:&展:&
文章的内容主要如下:
:讲解如果返回单个对象的json;==&使用@ResponseBody来实现;注解方式
:讲解如果返回多个对象的json;==&使用MappingJacksonJsonView来实现;xml配置方式:讲解如果返回多个对象的json;==&使用@ResponseBody来实现;注解方式
个人认为,使用@方式来实现json数据的返回比较方便,推荐使用。
本文讲解另外一种利用spring MVC返回json数据的方法。
在《【Spring学习笔记-MVC-3】返回Json数据-方式1》中介绍了通过:
&@ResponseBody声明返回值;
配置&mvc:annotation-driven /&;
来返回json数据。效果如下:
从上面的效果看,只能返回一个对象,不能返回多个对象,不能做到形如下图的返回结果,
存在局限性(可能可以返回多个,自己不知道如何实现)。
下面介绍的方式2,利用spring mvc返回json数据,可以实现同时返回多个对象的json数据
特别说明:
使用@ResponseBody可以实现同样的效果,实现同时返回多个对象的Json数据,而且使用@&ResponseBody方式更简洁。具体请参考《【Spring学习笔记-MVC-4】返回Json数据-方式1-kuozh》。
参考链接:&
具体步骤:
引入额外jar包:;使用bean视图解析器:&org.springframework.web.servlet.view.BeanNameViewResolver;使用&org.springframework.web.servlet.view.json.MappingJacksonJsonView配置需要返回的对象;声明:&mvc:annotation-driven&/&;
& 经测试,不添加这个声明,将出错;
spring mvc默认的最常用的视图解析器为org.springframework.web.servlet.view.InternalResourceViewResolver,
它的优先级默认是最低的,spring mvc还提供了许多其他类型的视图解析器,比如bean视图解析器
等,每个视图解析器的优先级都是可以手动设置的。在进行视图解析时,按照视图解析器优先级的顺序去解析视图,直到有视图解析器可以进行解析,解析过程就停止。
配置web.xml
id=&WebApp_ID& version=&2.4& xmlns=&/xml/ns/j2ee& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance& xsi:schemaLocation=&/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd& Spring Web MVC Application
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
mvc-dispatcher
配置mvc-dispatcher-servlet.xml
xmlns=&http://www.springframework.org/schema/beans& xmlns:context=&http://www.springframework.org/schema/context&
xmlns:p=&http://www.springframework.org/schema/p&
xmlns:mvc=&http://www.springframework.org/schema/mvc& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance& xsi:schemaLocation=&
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&
base-package=&com.ll.controller&
&!-- bean视图解析器 --&
class=&org.springframework.web.servlet.view.BeanNameViewResolver&
p:order=&10&
&!-- XMl及JSON视图解析器配置 --& &!-- &bean id=&userListJson&
class=&org.springframework.web.servlet.view.json.MappingJacksonJsonView&
p:renderedAttributes=&userList& /& --&
id=&userListJson&
class=&org.springframework.web.servlet.view.json.MappingJacksonJsonView&
name=&renderedAttributes&
如果仅仅返回一个对象的json数据,可以使用简写配置:
JSONController.java
执行过程解析
1. 在mvc-dispatcher-servlet.xml文件中我们配置了bean视图解析器,并设置器优先级为10,,
它的优先级是高于
2.逻辑视图返回值为:userListJson,
它首先会被bean视图解析器解析,解析发现&userListJson对应的bean为:userListJson,其对应的视图为:MappingJacksonJsonView;
这样,便将userlist、School和work转化为json数据,并返回前台。
浏览器:&&
JSONController.java
package com.ll.import java.util.ArrayLimport java.util.Limport org.springframework.stereotype.Cimport org.springframework.ui.ModelMimport org.springframework.web.bind.annotation.RequestMimport org.springframework.web.bind.annotation.RequestMimport org.springframework.web.bind.annotation.ResponseBimport com.ll.model.Pimport com.ll.model.S@Controller@RequestMapping(&/kfc/brands&)public class JSONController {
@RequestMapping(value=&/getShopInJson&, method = RequestMethod.GET) public @ResponseBody Shop getShopInJSON() {
System.out.println(&-----请求json数据--------&);
Shop shop = new Shop();
shop.setName(&zhangsan&);
shop.setStaffName(new String[]{&mkyong1&, &mkyong2&});
@RequestMapping(value = &/showUserListByJson&) public String showUserListInJson(ModelMap mm) {
List userList = new ArrayList();
Person user1 = new Person();
user1.setUsername(&tom&);
user1.setPasswd(&汤姆&);
Person user2 = new Person();
user2.setUsername(&john&);
user2.setPasswd(&约翰&);
userList.add(user1);
userList.add(user2);
mm.addAttribute(&userList&, userList);
mm.addAttribute(&School&,&SuZhou&);
mm.addAttribute(&Work&,&YanFa&);
return &userListJson&; }}
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:30202次
积分:2960
积分:2960
排名:第9640名
原创:265篇
转载:38篇
(17)(37)(56)(54)(52)(49)(47)

我要回帖

更多关于 max修改面板没了 的文章

 

随机推荐