我正在使用Spring引导1.5.2,我的SpringRest控制器如下所示
@RestController
@RequestMapping("/")
public class HomeController {
@RequestMapping(method=RequestMethod.GET)
public String index() {
return "index";
}
}
当我去http://localhost:8090/assessment/它到达我的控制器,但不返回我的index. html,这是在一个maven项目下的src/main/Resources或src/main/Resources/静态。如果我去这个网址http://localhost:8090/assessment/index.html,它会返回我的index.html。我看了这个教程https://spring.io/guides/gs/serving-web-content/他们使用thymeleaf。我必须使用thymeleaf或类似的东西来返回我的视图吗?
我的应用类看起来像这样
@SpringBootApplication
@ComponentScan(basePackages={"com.pkg.*"})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
当我将thymeleaf依赖项添加到我的类路径时,我收到这个错误(500响应代码)
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "index", template might not exist or might not be accessible by any of the configured Template Resolvers
我想我确实需要胸腺?我现在要尝试正确配置它。
它在更改我的控制器方法以返回index. html后工作,如下所示
@RequestMapping(method=RequestMethod.GET)
public String index() {
return "index.html";
}
我认为thymeleaf或类似的软件允许您关闭文件扩展名,但不确定。
RestController注解从方法返回的json不是超文本标记语言或JSP。它是@Controller和@Response seBody合二为一。@RestController的主要目的是创建RESTful Web服务。对于返回html或jsp,只需用@Controller注释控制器类。
你的例子是这样的:
您的控制器方法与您的路线“评估”
@Controller
public class HomeController {
@GetMapping("/assessment")
public String index() {
return "index";
}
}
您在“src/main/Resources/template/index. html”中的Thymeleaf模板
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>Hello World!</p>
</body>
</html>
我通过从配置类中删除@EnableWebMvc
注释来解决这个问题。
SpringMVC自动配置提供静态index. html
支持。
如果您想完全控制SpringMVC,您可以添加自己的@Configuration
注释为@EnableWebMvc。
从SpringMVC自动配置获取更多详细信息。