gpt4 book ai didi

java - Spring Boot 2 Maven 目录 View 解析器

转载 作者:行者123 更新时间:2023-11-30 12:05:00 24 4
gpt4 key购买 nike

我目前有一个使用 React JS 作为前端的 Spring Boot 应用程序。我在 Visual Studio 中运行,并通过 webpack 编译资源并将它们输出到 Maven 目标文件夹。您可以看到目录结构,其中 Java 类位于“classes”文件夹中,而客户端应用程序现在位于 webapp 文件夹中——注意 index.html。

因为这是一个单页应用程序,我只需要解析这个页面。因此,我的 Controller 被配置为返回索引文件。

@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" );
}
}

现在。我的问题是告诉我的 View 解析器与这个目录对话。

正如您从注释代码中看到的那样,我只尝试了几百个选项来尝试让它解析 View 。我已经在 documentRoot 上获得了我的项目目录的完整文件路径,所以如果有必要,我认为我可能会需要它。

我在 Controller 中放置了一个断点,这肯定会被击中,每次尝试查找相关 View 时它只会返回 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;
// }


}

enter image description here

enter image description here

最佳答案

你不需要MvcConfig

只需将 src/main/resources/application.properties 中的 static-locations 属性设置为 spring.resources.static-locations=classpath:/webapp/

将所有可能的请求映射到您的索引页面,例如:

@GetMapping({"/index","/","/home"})
public String reactApp()
{
return "/index.html";
}

可选的,您可以将请求重定向到您的索引页

@GetMapping({"/index","/","/home"})
public String reactApp()
{
return "redirect:/index.html";
}

关于java - Spring Boot 2 Maven 目录 View 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56706292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com