gpt4 book ai didi

java - 如何在 Spring Boot 中国际化 API 错误?

转载 作者:行者123 更新时间:2023-12-02 09:54:08 33 4
gpt4 key购买 nike

我能够使用

国际化 Controller 网页请求
@RequestMapping(value="/image")
public String image(@RequestHeader(name=HEADER_CONSTANTS.ACCEPT_LANGUAGE, required=false) String al) {

在参数列表中。但是我尝试将其放入 ResponseEntityExceptionHandler 中,但没有成功。

@ControllerAdvice(basePackages="com.example.apis")
public class RestExceptionHandler extends ResponseEntityExceptionHandler {

@ExceptionHandler(ApiException.class)
protected ResponseEntity<Object> handleApiException(ApiException ex, @RequestHeader(name=HEADER_CONSTANTS.ACCEPT_LANGUAGE, required=false) String al) {

2019-05-13 21:59:59.193 WARN 16052 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Failed to invoke @ExceptionHandler method: protected org.springframework.http.ResponseEntity com.example.apis.RestExceptionHandler.handleApiException(com.example.apis.ApiException,java.lang.String)

java.lang.IllegalStateException: Could not resolve method parameter at index 1 in protected org.springframework.http.ResponseEntity com.example.apis.RestExceptionHandler.handleApiException(com.example.apis.ApiException,java.lang.String): No suitable resolver for argument 1 of type 'java.lang.String'

它可以在没有@RequestHeader参数的情况下工作。如何在 JSON API 请求的异常处理程序中获取客户端的 Accept-Language HTTP header ?

Spring Boot 1.5.20

最佳答案

如果您需要的是当前用户的区域设置,则应该注册一个 LocaleResolver,然后从 LocaleContextHolder 获取区域设置。

@Bean
public LocaleResolver localeResolver() {
// Registering accept-header Locale Resolver with default Locale.US
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(Locale.US);

return localeResolver;
}

然后,您可以通过调用 LocaleContextHolder.getLocale() 在异常处理程序中获取区域设置。

关于java - 如何在 Spring Boot 中国际化 API 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56122099/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com