Вы можете обрабатывать ее с помощью определенного вашего отображения в <mvc:message-converters>
приведенном ниже примере используется только StringHttpMessageConverter
так это означает, что все поля строк преобразуются в формате JSON в ваших responseValueObjects, если вы хотите, чтобы ваши объекты также конвертировать в формат JSON вы должны написать свой заказ сообщение конвертор и установите его на <mvc:message-converters>
.
весна-servlet.xml
<!-- Activate to Spring MVC annotion like @RequestMapping or @Controller -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven>
Предположим, вы запрашиваете пользователей, ниже класс контроллера.
@Controller
@RequestMapping(value = "api/queryUser")
public class ApiQueryUser {
@Autowired
private UserService userService;
@Autowired
private ValidationService validationService;
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public UserResponseValue queryUser(HttpServletRequest request) {
UserResponseValue userResponseValue = new UserResponseValue();
String userName = request.getParameter("USERNAME");
String password = request.getParameter("PASSWORD");
String email = request.getParameter("EMAIL");
try {
// validationService.validateParamaterNotNull(userName, password);
BR_User user = userService.queryUser(userName, password, email);
userResponseValue.setUserName(user.getUserName());
userResponseValue.setEmail(user.getEmail());
userResponseValue.setRole(user.getRole());
userResponseValue.setResponseCode("100");
userResponseValue.setResponseMessage("User exist");
} catch (ValidationException e) {
userResponseValue.setResponseCode("99");
userResponseValue.setErrorCode(e.getErrorCode().name());
} catch (ApiException e) {
userResponseValue.setResponseCode("98");
userResponseValue.setErrorCode(e.getErrorCode().name());
} catch (Exception e) {
userResponseValue.setResponseCode("96");
userResponseValue.setErrorCode(ErrorCode.ERR20000.name());
}
return userResponseValue;
}
}
наконец responseValue объект, заботиться, что все fileds являются String
public class UserResponseValue{
private String userName;
private String role;
private String email;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
и убедитесь, что Джексон зависимость добавляется в ваш pom.xml
<!-- To use responseBody as a default JSON messageConverter -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
Это рабочий пример из моего проекта , Я использую Spring 4.
Если вы хотите, чтобы объекты, возвращаемые вашими контроллерами, проходили через ваш настраиваемый фильтр, вам придется расширить «MappingJackson2HttpMessageConverter», а затем зарегистрировать новый ' HttpMessageConverter' в вашей конфигурации сервлета. Есть много вопросов о SO, которые охватили это. – woemler