Spring 想要返回 html 内容结果返回 404
移动端小程序需要提供用户协议和隐私条款接口,需要返回相关的页面,输出 html 内容。印象中 spring 似乎要去掉 @ResponseBody
注解,然后返回字符串。
@Controller
public class MyController {
@GetMapping("/userProtocol")
public String userProtocol() {
return "userProtocol"; // 假设你的模板文件名为 userProtocol.html
}
}
然后就收到了 404 报错,百度了一下说是需要确保 HTML 文件放在正确的目录中。
查看了一下确实没有创建模板文件。按照返回的字符串名创建对应的模板文件,然后又报错 500 Internal Error:
Circular view path [userProtocol]: would dispatch back to the current handler URL [/xxx/common/userProtocol] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.
又百度了一下,好嘛,没有引入视图模板引擎。模板引擎有很多,这里以 thymeleaf
为例,添加依赖:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>3.3.0</version>
</dependency>
但这里只是提供一下接口(自己内部使用,主要是小程序强制要求),只需要简单返回 html 内容就好。所以干脆不要视图了,直接返回 html 字符串:
@RestController
public class MyController {
@GetMapping("/userProtocol")
public String userProtocol() {
// return "userProtocol"; // 假设你的模板文件名为 userProtocol.html
return "<html><body><h1>用户协议</h1></body></html>";
}
}
测试 OK!