【发布时间】:2017-11-12 22:42:46
【问题描述】:
这是我第一次尝试使用 Spring,但遇到了问题。我似乎无法将简单的 HTML 文件作为控制器内的视图返回。我正在尝试返回 index.html 文件(它只有一些文本和一个按钮),因为它在转到 localhost:8080/ 时显示正确。
该项目是使用 IntelliJ 生成的,我想我会提到这一点,因为它处理了大部分配置。
这是文件结构:
app:
| src
| main
| java
| com.my.testapp
| Main.java
| controllers
| TestController.java
| resources
| static
| index.html
这是我的文件:
Main.java
@SpringBootApplication
public class Main
{
public static void main(String[] args)
{
SpringApplication.run(Main.class, args);
}
}
TestController.java(第一个控制器实际工作)
@RequestMapping("/test")
@Controller
public class TestController
{
@RequestMapping(method = RequestMethod.GET, value = "/testget")
public @ResponseBody ArrayList<Test> foo()
{
ArrayList<Test> tests = new ArrayList<>();
tests.add(new Test("id1", "pass1"));
tests.add(new Test("id2", "pass2"));
return tests;
}
@RequestMapping(method = RequestMethod.GET, value = "/someview")
public String showView()
{
return "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.my</groupId>
<artifactId>testapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springtest</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
我以前使用@RestController 注释,控制器只会返回字符串索引,但现在我得到一个 404 页面(Whitelabel 错误页面)。我知道这是一个常见问题,但我无法使用其他人的解决方案来解决它。
编辑:好的,我设法通过删除@RequestMapping("/test") 行来修复它的一部分,但我现在需要将视图作为“index.html”而不是简单的“index”传递。有没有办法跳过.html?目前没有它是行不通的。
编辑#2:我终于弄清楚了如何使视图正常工作,请在下面查看我的答案。
【问题讨论】:
标签: java spring spring-boot intellij-idea