java Spring Boot 2 Maven目录视图解析器
我目前有一个Spring引导应用程序,它的前端使用React JS。我在VisualStudio中运行,通过webpack编译资源并将其输出到Maven目标文件夹。您可以看到目录的结构,Java类位于“classes”文件夹中,客户端应用程序现在位于webapp文件夹中——请注意索引。html
由于这是一个单页应用程序,我只需要这个页面来解决。因此,我的控制器被配置为返回索引文件
@SpringBootApplication
public class AdminApplication
{
public static void main( String[] args )
{
SpringApplication.run( AdminApplication.class, args );
}
}
@Controller
public class DefaultController
{
@RequestMapping( "/**" )
public ModelAndView reactApp()
{
return new ModelAndView( "index" );
}
}
现在。我的问题是告诉我的视图解析器与这个目录对话
从注释代码中可以看到,我只尝试了几百个选项,试图让它解析视图。我已经在documentRoot上找到了我的项目目录的完整文件路径,所以如果有必要,我想我可能需要它
我在控制器中设置了一个断点,它肯定会被击中,每次试图找到相关视图时,它只会返回404。任何关于我的viewResolver可能需要的外观的指导都将不胜感激。我可以看出有几个类可能是正确的,也可能是不正确的:
例如SpringResourceTemplateResolver和ClassLoaderTemplateResolver——不确定哪一个与我的需求最相关
@EnableWebMvc
@Configuration
public class MvcConfig implements WebMvcConfigurer,ApplicationContextAware {
private ApplicationContext context;
@Value("${server.document-root:}")
private String documentRoot;
@Override
public void setApplicationContext( ApplicationContext applicationContext ) {
this.context = applicationContext;
}
// private ITemplateResolver htmlTemplateResolver() {
// SpringResourceTemplateResolver resolver = new
// SpringResourceTemplateResolver();
// resolver.setApplicationContext(applicationContext);
// resolver.setPrefix(documentRoot);
// resolver.setCacheable(false);
// resolver.setTemplateMode(TemplateMode.HTML);
// return resolver;
// }
// @Bean
// public SpringResourceTemplateResolver templateResolver() {
// SpringResourceTemplateResolver templateResolver = new
// SpringResourceTemplateResolver();
// templateResolver.setPrefix( "/webapp/" );
// templateResolver.setCacheable(false);
// templateResolver.setSuffix(".html");
// templateResolver.setTemplateMode("HTML");
// return templateResolver;
// }
private ITemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(context);
resolver.setPrefix("templates/");
resolver.setSuffix(".html");
resolver.setTemplateMode(TemplateMode.HTML);
return resolver;
}
// public ITemplateResolver templateResolver() {
// ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
// templateResolver.setPrefix("templates/");
// templateResolver.setCacheable(false);
// templateResolver.setSuffix(".html");
// templateResolver.setTemplateMode(TemplateMode.HTML);
// templateResolver.setCharacterEncoding("UTF-8");
// return templateResolver;
// }
}
# 1 楼答案
您不需要MvcConfig类,Spring boot自动配置视图解析器。你所要做的就是把你的模板放到
src/main/resources/templates/
目录,然后做一个简单的控制器映射,就像这样在你的家庭控制器里。 你也可以看看这个React.js and Spring example