Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc LocalChangeInterceptor中的异常不显示白标签错误页面_Spring Mvc_Spring Boot - Fatal编程技术网

Spring mvc LocalChangeInterceptor中的异常不显示白标签错误页面

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

我遇到了一个问题,LocaleChangeInterceptor中抛出的异常显示一个空白页面,而不是白标签错误页面

给定以下spring引导应用程序(我尝试了1.2.5和1.3.0.M2)

当我呼叫
http://localhost:8080/show-错误
我看到了spring boot白色标签错误页面,其中显示了预期的错误

但是,当我通过提供非法的locale
http://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);
    }
}