【发布时间】:2015-04-27 10:54:43
【问题描述】:
所以我正在尝试按照本指南了解如何使用 Spring 提供 html 文件: http://spring.io/guides/gs/serving-web-content/
我有完全相同的文件夹结构和完全相同的文件,但是当我运行 Spring Boot 服务器时,我的 localhost:8080/greeting 将只显示从 GreetingController 返回的字符串 greeting,就是这样,如果我看的话在页面源代码中,没有html。
我找不到任何相关的答案,因为所有类似的答案仍然使用 .xml 文件驱动的 Spring,您在 .xml 文件中声明视图。但是本指南明确指出不需要使用 .xml。它应该就是这样工作的。
映射:
@RestController
public class GreetingController {
@RequestMapping("/greeting")
public String greeting(@RequestParam(value="name", required = false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
使用@Controller 会抛出错误:
2015-02-25 14:50:14.830 ERROR 2378 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Circular view path [greeting]: would dispatch back to the current handler URL [/greeting] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause
javax.servlet.ServletException: Circular view path [greeting]: would dispatch back to the current handler URL [/greeting] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
编辑:
解决方案:
a) 使用@Controller 而不是@RestController
b) 在 IntelliJ 中启动应用程序时,请确保创建一个在执行 Main 类之前运行的 Gradle 任务。
【问题讨论】:
-
仔细阅读,你会找到答案。
-
控制器返回视图,并以 html 文件的形式显示给您
-
在控制器中发布您的映射。和文章里的一样吗?
@RequestMapping("/greeting") public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) { model.addAttribute("name", name); return "greeting"; } -
嗨,我也有同样的问题。如果我通过命令行运行项目,它工作正常,但使用 Intellij 时失败。在运行应用程序之前创建一个 gradle 任务是什么意思?\
-
@HaifengZhang,我卡在了同一个地方。你想清楚了吗?我不明白在应用程序启动之前要运行什么 gradle 任务。
标签: java html spring spring-mvc