RequestMapping导致404 - Spring Boot

时间:2015-11-10 09:57:55

标签: spring web-applications spring-boot http-status-code-404

我是Spring Boot的新手。在使用@RequestMapping时,在以下简单代码中,http://localhost:8080/person会导致以下错误:

错误:

There was an unexpected error (type=Not Found, status=404).

代码:

@Configuration
@EnableAutoConfiguration
@ComponentScan
@Controller
public class SpringBootAlphaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootAlphaApplication.class, args);
    }


    @RequestMapping("/person")
    public String  addPerson(Model model){
        Person person = new Person();
        person.setName("SomeName");
        person.setAge(28);
        model.addAttribute("person", person);
        return "personview";

    }

    @RequestMapping("/")
    public String testPath(){
        return "Test URL";
    }

}

2 个答案:

答案 0 :(得分:1)

考虑到你的答案,那么你实际上应该得到另一个错误。如果您使用的是 spring-boot-starter-thymeleaf ,则如果您的视图可以解析(但不包含</meta>标记),则会出现错误:

org.xml.sax.SAXParseException: The element type "meta" must be terminated by the matching end-tag "</meta>".

你应该获得type=Internal Server Error, status=500状态。

要解决这个问题,您可以通过将其模式设置为LEGACYHTML来实际配置Thymeleaf的严格性:

spring.thymeleaf.mode=LEGACYHTML5

但是,它要求您添加另一个名为 nekohtml 的依赖项:

<dependency>
  <groupId>net.sourceforge.nekohtml</groupId>
  <artifactId>nekohtml</artifactId>
  <version>1.9.15</version>
</dependency>

未找到错误通常意味着其他事情:

  • 您的观点无法解决:也许您错误拼写了HTML的名称,或者您没有将其放在正确的文件夹中
  • 您的请求映射无法解决:也许您拼错了名称,或者您使用了错误的上下文路径
  • 您没有模板引擎来解析视图

答案 1 :(得分:0)

这是由<meta>没有结尾标记</meta>引起的。显然Thymleaf对标签非常严格,希望返回更有意义的消息而不是404 Not Found。