SpringMVC에서 @ResponseBody 메모를 해결하고 중국어 디코드 문제를 반환합니다.
4025 단어 responsebody
@RequestMapping 의 produces 방법
첫 번째 해결 방안은 @RequestMapping 주석을 사용하는 프로덕션 방법이다.다음과 같이 쓰십시오.
@RequestMapping(value = "testPersonalValidtor.do",produces = "application/json;charset=utf-8")
방법에 이 주해를 더하면 된다.그러나 이렇게 쓰면 제한이 있어 특정한 방법에서만 사용할 수 있다.전체적으로 사용하려면 SpringMVC의 구성 파일을 수정해야 합니다.messageConverters 사용
두 번째 해결 방법은 HttpMessageConverter 인터페이스를 사용하는 관련 실현 클래스입니다.우리는 먼저 프로필의 프로필 정보를 본다.
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=utf-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
그리고 Maven 의존에 Jackjson 의존을 설정해야 합니다.
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
어제 나를 우울하게 한 것은 내가 이렇게 설정한 후에도 확실히 효력이 발생하지 않는다는 것이다.나중에 위치가 틀린 것을 발견했습니다. 이 설정을 주의:
SpringMVC의 프로필에
<!-- SpringMVC -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=utf-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
주의: 이런 설정을 사용할 때 Request Mapping Handler Mapping, Request Mapping Handler Adapter 또는 Default Annotation Handler Mapping, Annotation Method Handler Adapter의 Bean 설정을 제거해야 합니다. 그렇지 않으면 효과가 없을 수 있습니다.또한 요청 매핑 처리 클래스의 반환 유형은 String일 수도 있고 Object일 수도 있습니다. (Object가 JavaBean이라면 SpringMVC는 Jackson 문자열로 변환됩니다.)예는 다음과 같습니다.
@RequestMapping(value = "testPersonalValidtor.do")
@ResponseBody
//
public Object testPersonalValidtor(@Valid PersonScope personScope, BindingResult bindingResult){
if(bindingResult.hasErrors()){
StringBuffer sb = new StringBuffer();
for(ObjectError objectError : bindingResult.getAllErrors()){
sb.append(((FieldError)objectError).getField() +" : ").append(objectError.getDefaultMessage());
}
return sb.toString();
}else{
return personScope;
}
}
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.