提问者:小点点

SpringRest控制器不返回html


我正在使用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或类似的软件允许您关闭文件扩展名,但不确定。


共3个答案

匿名用户

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自动配置获取更多详细信息。

相关问题