0

春のMVCで。自動的に設定されるパラメーターとしてWebRequestを使用できます ( Localeなどの他のものと共に)。

また、@RequestBody を使用して、何のデータをどのように取得する必要があるかを説明する JSON オブジェクトを渡します。

@RequestBodyオブジェクトEntriesRequestDTOに直接WebRequestを自動的に設定するように Spring を取得することは可能ですか(私はEntriesRequestDTO にWebRequestフィールドを作成します)。WebRequestから属性を取得する必要があることが多いため、これにより複雑さを隠すことができます。

 @RequestMapping(value = "/entries", method = { RequestMethod.POST })
    public EntriesDTO getEntries(@RequestBody EntriesRequestDTO request, WebRequest webRequest){
   ...
}
4

2 に答える 2

0

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();
}

正規表現が正しいこと (またはカスタム アノテーションを追加すること) を確認し、キャスト例外を確認します。

于 2015-07-22T10:12:05.277 に答える
0

カスタム 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);
    }
}

DTOJacksonMessageConverterMappingJackson2HttpMessageConverterを拡張し、読み取りメソッドをオーバーライドします。

于 2015-07-22T12:36:36.433 に答える