我在弹簧启动时遇到控制器问题。哪个应该返回一个index.html
文件,但它正在做什么,返回字符串" index"。
以下是您要查找的内容,
的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.earworm</groupId>
<artifactId>earworm</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
名为LoginController.java的控制器
package com.earwormproject.earwormcontrollers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class LoginController {
@RequestMapping(value = "/index", method = RequestMethod.GET)
@ResponseBody
public String createLoginForm(){
return "index";
}
@RequestMapping(value = "/profile", method = RequestMethod.GET)
@ResponseBody
public String addDataToLoginForm() {
return "profile";
}
}
这是主要的课程,
package com.earwormproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Earworm {
public static void main(String[] args){
SpringApplication.run(Earworm.class, args);
}
}
文件结构
Earworm
是主要的类。到目前为止,我知道控制器检查src/main/resources/templates
中的html模板,我已将index.html
放入模板中,但无效。
当我转到http://localhost:8080/index
时,它会向我显示字符串index
,而不是index.html
页面。像这样,
我已经在SO中经历了几乎所有类似的问题,尝试了所有这些但在这种情况下不起作用。一些线索将有很大帮助。谢谢。
答案 0 :(得分:1)
从您的控制器中删除响应正文,然后再试一次。
答案 1 :(得分:1)
在标题中设置内容类型,删除注释@ResponseBody并更改&#34;索引&#34;到&#34; index.html&#34;
(keyup.numbers)="foo()"
静态资源的类路径(来自模板的文件)也必须位于以下位置:/ static或/ public或/ resources或/ META-INF / resources 因为只有这个位置弹簧知道默认绑定
答案 2 :(得分:1)
我遇到了同样的问题,但我的问题是JDK9。当我尝试使用JDK1.8时,一切都变得很好。
答案 3 :(得分:0)
解决此问题的三个步骤
1.在返回HTML文件时,删除@RequestBody批注。
2.从maven存储库中添加一个与您正在使用的tomcat服务器相对应的依赖项。
https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper
3.关闭所有html标签。 Thymleaf希望html文件是有效的xml文件。
答案 4 :(得分:0)
@ResponseBody不是返回视图。您可以将其用于API。
答案 5 :(得分:0)
我有同样的问题。仅通过返回带有html文件名的String便无法返回html。对我来说,它只能在ModelAndView下使用:
@RequestMapping("/")
public ModelAndView index () {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
有人说这种问题是因为jdk版本而发生的。我使用的是jdk14。