一、多说两句
实现无业务逻辑跳转:
1、之前是在controller:每次跳转都要写一个方法:
2、现在只需要在函数中多一条这样的语句:
registry.addViewController("/").setViewName("login");
在config中编写视图映射(addViewControllers):
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/login.html").setViewName("login");
}
二、现在步入正题:
1、首先上问题:
但是用了上面的视图映射(addViewControllers)却无法映射了(mmp💢)。
页面显示:
控制台显示:
2、分析问题:
Spring Boot2.0的版本(创建的时候自动选择的这个版本),然后编译器告诉我WebMvcConfigurerAdapter已过时了
而,我们一般用WebMvcConfigurationSupport和WebMvcConfigurer来代替WebMvcConfigurerAdapter
这里是个大坑:
用这两个编写视图映射时都不报错,而且还TM方法提示都一个模样(mmp💢)。
3、解决问题:
注意:
添加@Configuration,等价于xml配置。
加上@Bean这样才能将组件加到容器中。
引起上述错误的代码:
@Bean
public WebMvcConfigurationSupport webMvcConfigurationSupport(){
WebMvcConfigurationSupport support = new WebMvcConfigurationSupport() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/login.html").setViewName("login");
}
};
return support;
}
订正后的正确代码:
@Bean
public WebMvcConfigurer webMvcConfigurer(){
WebMvcConfigurer configurer = new WebMvcConfigurer() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/login.html").setViewName("login");
}
};
return configurer;
}
哈哈哈😁
再次运行,浏览器就可以显示请求了。