Spring mvc LocalChangeInterceptor中的异常不显示白标签错误页面
我遇到了一个问题,LocaleChangeInterceptor中抛出的异常显示一个空白页面,而不是白标签错误页面 给定以下spring引导应用程序(我尝试了1.2.5和1.3.0.M2) 当我呼叫Spring mvc LocalChangeInterceptor中的异常不显示白标签错误页面,spring-mvc,spring-boot,Spring Mvc,Spring Boot,我遇到了一个问题,LocaleChangeInterceptor中抛出的异常显示一个空白页面,而不是白标签错误页面 给定以下spring引导应用程序(我尝试了1.2.5和1.3.0.M2) 当我呼叫http://localhost:8080/show-错误我看到了spring boot白色标签错误页面,其中显示了预期的错误 但是,当我通过提供非法的localehttp://localhost:8080/show-语言环境?语言环境=。页面保持空白,预期的异常(“java.lang.Illegal
http://localhost:8080/show-错误
我看到了spring boot白色标签错误页面,其中显示了预期的错误
但是,当我通过提供非法的localehttp://localhost:8080/show-语言环境?语言环境=。
页面保持空白,预期的异常(“java.lang.IllegalArgumentException:locale部分”。“包含无效字符”)仅记录到控制台
第二个案例不也应该显示白标签错误页面吗?我两天前在运行网站安全性测试时遇到了同一个问题,在plain Spring MVC中也出现了这种情况 看起来错误发生在异常解析程序可以捕获的范围之外,所以没有使用错误页,我想这在spring boot及其“白标签错误页”中是相同的 当我看到它时,我很惊讶,但是我想我可能对处理用户发送完全无效的区域设置的情况不感兴趣,为什么会发生这种情况
但是,如果您想处理这种情况,您可能应该编写并注册自己版本的LocaleChangeInterceptor,该版本将捕获并忽略未捕获在中的StringUtils.parseLocaleString异常,谢谢您的反馈。我通过添加一个具有最高优先级的过滤器并手动创建错误响应来解决我的问题,以确保任何其他此类未捕获的异常不会导致类似问题。
@SpringBootApplication
@Controller
public class LocaleChangeErrorDemoApplication extends WebMvcConfigurerAdapter {
@RequestMapping("/show-locale")
@ResponseBody
public String showLocale(Locale locale) {
return "locale: " + locale.toString();
}
@RequestMapping("/show-error")
public void showError() {
throw new RuntimeException("intentional error");
}
@Bean(name = "localeResolver")
public LocaleResolver getLocaleResolver(){
return new CookieLocaleResolver();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LocaleChangeInterceptor());
}
public static void main(String[] args) {
SpringApplication.run(LocaleChangeErrorDemoApplication.class, args);
}
}