Hallo Leute,
ich habe hier ein Verständnisproblem mit den headers in meinem Controller. Für i18n meiner Anwendung habe ich verschiedene messages files erstellt.
Diese Liegen unter resources/i18n. Dazu habe ich die Klasse I18NConfig.
und die Klasse ValidatorConfig
dazu meinen Controller CustomerController
Obwohl ich @RequestHeader HttpHeaders headers nicht verarbeite kann ich in Postman über Accept-Language die Fehlermeldungen in einer anderen Sprache ausgeben lassen.
Wie ist den hier die richtige Vorgehensweise?
ich habe hier ein Verständnisproblem mit den headers in meinem Controller. Für i18n meiner Anwendung habe ich verschiedene messages files erstellt.
Diese Liegen unter resources/i18n. Dazu habe ich die Klasse I18NConfig.
Java:
@Configuration
public class I18NConfig {
@Bean
public AcceptHeaderLocaleResolver localeResolver() {
final AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
resolver.setDefaultLocale(Locale.US);
// TEST Setting System default Locale to US
Locale.setDefault(Locale.US);
return resolver;
}
@Bean
public ResourceBundleMessageSource messageSource() {
final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
und die Klasse ValidatorConfig
Java:
@Configuration
@RequiredArgsConstructor
public class ValidatorConfig {
private final I18NConfig i18NConfig;
@Bean
LocalValidatorFactoryBean getValidator() {
LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean();
validatorFactoryBean.setValidationMessageSource(i18NConfig.messageSource());
return validatorFactoryBean;
}
}
dazu meinen Controller CustomerController
Java:
@RestController
@RequestMapping("/v1/customers")
@Validated
@Slf4j
@RequiredArgsConstructor
@Tag(name = "Customers API")
public class CustomerController {
private final CustomerService customerService;
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<CustomerResponseDto> saveCustomer(@Valid
@RequestBody CustomerRequestDto customerRequestDto,
@RequestHeader HttpHeaders headers) {
Customer customer = customerService.saveCustomer(customerRequestDto);
URI location = ServletUriComponentsBuilder
.fromCurrentRequest()
.path("/{customerId}")
.buildAndExpand(customer.getId())
.toUri();
log.info("Customer: {} saved.", customerRequestDto);
return ResponseEntity.created(location).build();
}
}
Obwohl ich @RequestHeader HttpHeaders headers nicht verarbeite kann ich in Postman über Accept-Language die Fehlermeldungen in einer anderen Sprache ausgeben lassen.
Wie ist den hier die richtige Vorgehensweise?