404运行Spring教程

时间:2014-08-06 08:05:51

标签: java eclipse spring maven spring-mvc

我正在http://spring.io/guides/gs/validating-form-input/处理Spring教程,并在尝试访问localhost root时获得404。

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Aug 06 02:36:15 CDT 2014
There was an unexpected error (type=Not Found, status=404).

我稍微修改了工作流程以使用Eclipse的Maven项目设置。我采取的步骤与教程不同,依次为:

  1. 在Eclipse中创建了一个Maven项目
  2. 替换了使用教程
  3. 中生成的pom.xml
  4. 本教程指示在resources/templates中包含模板HTML文件,Spring引发了此异常(实际上有很多内部异常),Caused by: java.lang.IllegalStateException: Cannot find template location: class path resource [templates/] (please add some templates or check your Thymeleaf configuration)
  5. 要解决此问题,我已将模板form.htmlresults.html移至类路径上的/templates
  6. 我使用调试器检查了WebController类,并且没有命中任何代码。我不相信这是一个本地配置问题,因为他们的git repo中完成的教程表现得如预期的那样。

    如果有人有任何见解,我们将不胜感激。谢谢!


    这些是我非工作尝试的文件。

    WebController.java

    package hello;
    
    import javax.validation.Valid;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.mvc.support.RedirectAttributes;
    import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    public class WebController extends WebMvcConfigurerAdapter {
        @Override
        public void addViewControllers(ViewControllerRegistry registry) { 
            registry.addViewController("/results").setViewName("results"); 
        }
    
        @RequestMapping(value="/", method=RequestMethod.GET)
        public String showForm(Person person) { 
            return "form"; 
        }
    
        @RequestMapping(value="/", method=RequestMethod.POST)
        public String checkPersonInfo(@Valid Person person, BindingResult bindingResult) { 
            if (bindingResult.hasErrors()) { 
                return "form"; 
            }
            return "redirect:/results"; 
        }
    }
    

    Application.java

    package hello;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ComponentScan
    @EnableAutoConfiguration
    public class Application {
        public static void main(String[] args) throws Exception { 
            SpringApplication.run(Application.class, args); 
        }
    }
    

    Person.java

    package hello;
    
    import javax.validation.constraints.Min;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
    
    public class Person {
        @Override
        public String toString() {
            StringBuilder builder = new StringBuilder();
            builder.append("Person [name=")
                .append(name)
                .append(", age=")
                .append(age)
                .append("]");
            return builder.toString();
        }
    
        @Size(min=2, max=30)
        private String name; 
    
        @NotNull
        @Min(18)
        private Integer age; 
    
        public String getName() { 
            return this.name; 
        }
    
        public void setName(String name) { 
            this.name = name; 
        }
    
        public Integer getAge() { 
            return age; 
        }
    
        public void setAge(Integer age) { 
            this.age = age; 
        }
    }
    

    的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>org.springframework</groupId>
        <artifactId>gs-validating-form-input</artifactId>
        <version>0.1.0</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.1.4.RELEASE</version>
        </parent>
    
        <properties>
            <!-- use UTF-8 for everything -->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <start-class>hello.Application</start-class>
         </properties>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
            </dependency>
    <dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-el</artifactId>
    </dependency>
        </dependencies>
    
        <repositories>
            <repository>
                <id>spring-releases</id>
                <name>Spring Releases</name>
                <url>http://repo.spring.io/libs-release</url>
            </repository>
        </repositories>
    
        <pluginRepositories>
            <pluginRepository>
                <id>spring-releases</id>
                <name>Spring Releases</name>
                <url>http://repo.spring.io/libs-release</url>
            </pluginRepository>
        </pluginRepositories>
    
    </project>
    

1 个答案:

答案 0 :(得分:3)

您的控制器上没有@Controller。就Spring而言,这个类只是一个它应该不关心的简单pojo:它没有在任何地方定义,并且它没有被类路径扫描拾取,因为它没有正确的注释。