Spring座控制器不返回html

9rbhqvlz  于 2023-05-17  发布在  Spring
关注(0)|答案(5)|浏览(240)

我使用的是spring Boot 1.5.2,我的spring rest控制器看起来像这样

@RestController
@RequestMapping("/")
public class HomeController {

    @RequestMapping(method=RequestMethod.GET)
    public String index() {
        return "index";
    }

}

当我转到http://localhost:8090/assessment/时,它到达了我的控制器,但没有返回我的index.html,它位于src/main/resources或src/main/resources/static下的maven项目中。如果我转到这个url http://localhost:8090/assessment/index.html,它会返回我的index.html。我看了这个教程https://spring.io/guides/gs/serving-web-content/和他们使用thymeleaf。我是否必须使用thymeleaf或类似的东西来让我的spring rest控制器返回我的视图?
我的应用程序类如下所示

@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或类似的软件可以让你离开文件扩展名,虽然不确定。

o2g1uqev

o2g1uqev1#

RestController注解从方法返回json,而不是HTML或JSP。它是@Controller和@ResponseBody的组合。@RestController的主要目的是创建RESTful Web服务。对于返回html或jsp,只需使用@Controller注解控制器类。

bvn4nwqk

bvn4nwqk2#

你的例子应该是这样的:
您的控制器方法与您的路线“评估”

@Controller
public class HomeController {

    @GetMapping("/assessment")
    public String index() {
        return "index";
    }

}

您的Thymeleaf模板在“src/main/resources/templates/index.html”

<!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>
jtjikinw

jtjikinw3#

我通过从配置类中删除@EnableWebMvc注解解决了这个问题。
Spring MVC Auto-configuration提供了静态index.html支持。
如果你想完全控制Spring MVC,你可以添加你自己的@Configuration注解@EnableWebMvc
从Spring MVC Auto-configuration获取更多细节。

41zrol4v

41zrol4v4#

如果您尝试“构建RESTful Web Service”->使用@RestController annotation注解您的控制器类,如果不使用@Controller class注解您的控制器类。
使用spring作为SpringMVC - @Controller
使用spring作为SpringRESTfull Web Service - @RestController
使用此链接阅读:Spring Stereo Type

ndh0cuux

ndh0cuux5#

在从@RestController@Controller并添加thymeleaf之后,它对我有效。请务必使用正确的选项:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

因为我以前有一个,它没有工作:

<dependency>
  <groupId>org.thymeleaf</groupId>
  <artifactId>thymeleaf</artifactId>
</dependency>

相关问题