我正在启动一个项目,所有 html 页面都已准备好。所以,现在我必须创建所有 Controller 来处理请求并显示 View 。在创建所有 Controller 之前,我是否可以有一个“通用” Controller 来获取与路线相对应的 View 。
比如我有spring mvc+thymeleaf。我的所有 .html 都位于 WebContent/WEB-INF/templates 中,并带有解析器:
private ITemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(applicationContext);
resolver.setPrefix("/WEB-INF/templates/");
resolver.setTemplateMode(TemplateMode.HTML);
return resolver;
}
我创建的第一个也是唯一一个 Controller 是:
@RequestMapping(value = "/", method = RequestMethod.GET)
public String login(Model model) {
return "authentication/login.html";
}
那么,我可以有一个“通用” Controller 来处理其余的请求,这样如果你写“http://localhost:8080/authentication/register.html” ',通用 Controller 将获取'authentication/register.html'中的 View ?
最佳答案
如果模板是静态的,您可以将它们作为资源提供。阅读 spring documentation on that topic .
基本上看起来像
<mvc:resources mapping="/**" location="/WEB-INF/templates/"/>
或
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/WEB-INF/templates/");
}
}
取决于项目中 spring 配置的类型。
关于java - Spring MVC 处理未映射的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394834/