发表于: 2017-08-09 21:21:37

1 1055


今天:完成了和前端接口的整理,完成了和前端数据库字段的统一,使用DAL生成了代码,跑通了自动生成的单元测试,新建了项目,将生成的代码拷贝过来,对自动生成的配置文件进行了一定的修改,加入了Spring MVC配置,写了几个直接调用生成代码可以跑通的接口,用Postman进行了测试。


问题:使用Gson返回中文乱码问题,在之前做任务时是不存在的,原因是DAL中Spring版本过低,是有3.0.5,在新版本是可以直接通过response.setHeader()或者response.setEncoding()进行设置的,在老版本如果用@ResponseBody 则Spring会自己把编码再改回IOSxxxxx。


解决方法是使用一个拦截器,每当那个方法被调用时,设置它的属性。


package com.ptteng.carrot.yongzheng.Interceptor;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter;

import java.nio.charset.Charset;
import java.util.Arrays;

/**
* Created by ZengTian on 2017/8/9.
* JSON中文编码拦截器
*/
public class EncodingPostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String name)
throws BeansException {
if (bean instanceof AnnotationMethodHandlerAdapter) {
HttpMessageConverter<?>[] convs = ((AnnotationMethodHandlerAdapter) bean).getMessageConverters();
           for (HttpMessageConverter<?> conv: convs) {
if (conv instanceof StringHttpMessageConverter) {
((StringHttpMessageConverter) conv).setSupportedMediaTypes(
Arrays.asList(new MediaType("application", "json",
                                   Charset.forName("UTF-8"))));
               }
}
}
return bean;
   }

public Object postProcessAfterInitialization(Object bean, String name)
throws BeansException {
return bean;
   }
}


明天:完成一些简单的接口,部署让前端测试。


总结:无


进度:http://task.ptteng.com/zentao/project-burn-277.html


返回列表 返回列表
评论

    分享到