@RequestBody 对象上的 WebRequest
WebRequest on @RequestBody object
在 Spring MVC 中。我可以使用 WebRequest 作为自动设置的参数(以及 Locale 等其他参数)。
我还使用@RequestBody 传入一个 JSON 对象,该对象描述了应该获取哪些数据以及如何获取数据。
是否可以让Spring直接在@RequestBody对象上自动设置WebRequestEntriesRequestDTO(我会在 EntriesRequestDTO 上创建一个 WebRequest 字段)。这将使我能够隐藏一些复杂性,因为我经常需要从 WebRequest.
获取属性
@RequestMapping(value = "/entries", method = { RequestMethod.POST })
public EntriesDTO getEntries(@RequestBody EntriesRequestDTO request, WebRequest webRequest){
...
}
您可以使用 AOP 将 WebRequest 设置为 DTO
@Around("execution(* (com.your.company..*).*(..))")
public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {
final Object[] args = joinPoint.getArgs();
//get args[0] and args[1]
return joinPoint.proceed();
}
确保正则表达式正确(或添加自定义注释),检查转换异常。
我最终制作了一个自定义的 HttpMessageConverter。这不是一个非常通用的解决方案,但对我有用:
@Configuration
public class WebConfiguration extends WebMvcConfigurationSupport {
@Bean
public DTOJackonMessageConverter customJackson2HttpMessageConverter() {
return new DTOJackonMessageConverter();
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(customJackson2HttpMessageConverter());
super.addDefaultHttpMessageConverters(converters);
}
}
DTOJacksonMessageConverter 扩展了 MappingJackson2HttpMessageConverter 并覆盖了 read 方法。
在 Spring MVC 中。我可以使用 WebRequest 作为自动设置的参数(以及 Locale 等其他参数)。
我还使用@RequestBody 传入一个 JSON 对象,该对象描述了应该获取哪些数据以及如何获取数据。
是否可以让Spring直接在@RequestBody对象上自动设置WebRequestEntriesRequestDTO(我会在 EntriesRequestDTO 上创建一个 WebRequest 字段)。这将使我能够隐藏一些复杂性,因为我经常需要从 WebRequest.
获取属性 @RequestMapping(value = "/entries", method = { RequestMethod.POST })
public EntriesDTO getEntries(@RequestBody EntriesRequestDTO request, WebRequest webRequest){
...
}
您可以使用 AOP 将 WebRequest 设置为 DTO
@Around("execution(* (com.your.company..*).*(..))")
public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {
final Object[] args = joinPoint.getArgs();
//get args[0] and args[1]
return joinPoint.proceed();
}
确保正则表达式正确(或添加自定义注释),检查转换异常。
我最终制作了一个自定义的 HttpMessageConverter。这不是一个非常通用的解决方案,但对我有用:
@Configuration
public class WebConfiguration extends WebMvcConfigurationSupport {
@Bean
public DTOJackonMessageConverter customJackson2HttpMessageConverter() {
return new DTOJackonMessageConverter();
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(customJackson2HttpMessageConverter());
super.addDefaultHttpMessageConverters(converters);
}
}
DTOJacksonMessageConverter 扩展了 MappingJackson2HttpMessageConverter 并覆盖了 read 方法。