我使用的是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或类似的软件可以让你离开文件扩展名,虽然不确定。
5条答案
按热度按时间o2g1uqev1#
RestController注解从方法返回json,而不是HTML或JSP。它是@Controller和@ResponseBody的组合。@RestController的主要目的是创建RESTful Web服务。对于返回html或jsp,只需使用@Controller注解控制器类。
bvn4nwqk2#
你的例子应该是这样的:
您的控制器方法与您的路线“评估”
您的Thymeleaf模板在“src/main/resources/templates/index.html”
jtjikinw3#
我通过从配置类中删除
@EnableWebMvc
注解解决了这个问题。Spring MVC Auto-configuration提供了静态
index.html
支持。如果你想完全控制Spring MVC,你可以添加你自己的
@Configuration
注解@EnableWebMvc
。从Spring MVC Auto-configuration获取更多细节。
41zrol4v4#
如果您尝试“构建RESTful Web Service”->使用
@RestController
annotation注解您的控制器类,如果不使用@Controller
class注解您的控制器类。使用spring作为SpringMVC - @Controller时
使用spring作为SpringRESTfull Web Service - @RestController时
使用此链接阅读:Spring Stereo Type
ndh0cuux5#
在从
@RestController
到@Controller
并添加thymeleaf之后,它对我有效。请务必使用正确的选项:因为我以前有一个,它没有工作: