【问题标题】:Spring boot :Unable to load view春季启动:无法加载视图
【发布时间】:2015-12-03 10:42:56
【问题描述】:

我无法使用以下配置加载 home.html。控制器总是重定向到 src/main/resources/templates/error.html。可能是什么问题? 我还在我的 pom 中包含了 thymleaf 依赖,这是一个这样的建议。 配置类:

@SpringBootApplication
@ComponentScan("com.sg.repository.")
public class SgmembersApplication {


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


    @Bean
    public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) {
        return hemf.getSessionFactory();
    }
}

src/main/resources/templates/home.html

 <!DOCTYPE HTML>
<html>
  <head>  
    <title>Members</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>
  <body>
   <label> This is home page</label>    
  </body>
</html>      

控制器:

@Controller
public class MainController {


     @RequestMapping("/")
     public String getHomePage() {
         return "home";
     }

     @RequestMapping("/error")
     public String getErrorPage() {
         return "error";
     } 

application.properties

    # Database
spring.datasource.driverClassName: com.mysql.jdbc.Driver
spring.datasource.url: jdbc:mysql://localhost:3306/sg
spring.datasource.username: 
spring.datasource.password: 

# Hibernate
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

#tomcat bind address
server.port=8181 

相关控制台跟踪:

2015-12-03 17:52:52.744  INFO 16720 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2015-12-03 17:52:52.747  INFO 16720 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'metricFilter' to: [/*]
2015-12-03 17:52:52.747  INFO 16720 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2015-12-03 17:52:52.747  INFO 16720 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2015-12-03 17:52:52.747  INFO 16720 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2015-12-03 17:52:52.747  INFO 16720 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'requestContextFilter' to: [/*]
2015-12-03 17:52:52.747  INFO 16720 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'webRequestLoggingFilter' to: [/*]
2015-12-03 17:52:52.747  INFO 16720 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'applicationContextIdFilter' to: [/*]
2015-12-03 17:52:53.181  INFO 16720 --- [           main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2015-12-03 17:52:53.194  INFO 16720 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [


2015-12-03 17:52:54.041  INFO 16720 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-12-03 17:52:54.042  INFO 16720 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-12-03 17:52:54.067  INFO 16720 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2015-12-03 17:52:54.067  INFO 16720 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2015-12-03 17:52:54.108  INFO 16720 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2015-12-03 17:52:54.399  INFO 16720 --- [           main] roperties$SimpleAuthenticationProperties : 


2015-12-03 17:52:55.011  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/health || /health.json],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(java.security.Principal)
2015-12-03 17:52:55.011  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/configprops || /configprops.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2015-12-03 17:52:55.012  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/metrics/{name:.*}],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)
2015-12-03 17:52:55.012  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/metrics || /metrics.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2015-12-03 17:52:55.012  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/beans || /beans.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2015-12-03 17:52:55.013  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/autoconfig || /autoconfig.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2015-12-03 17:52:55.014  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/trace || /trace.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2015-12-03 17:52:55.015  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/dump || /dump.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2015-12-03 17:52:55.015  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/env/{name:.*}],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint.value(java.lang.String)
2015-12-03 17:52:55.016  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/env || /env.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2015-12-03 17:52:55.016  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/info || /info.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2015-12-03 17:52:55.016  INFO 16720 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/mappings || /mappings.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

【问题讨论】:

    标签: spring spring-mvc spring-boot


    【解决方案1】:

    查看了您的代码。更改您的组件扫描以扫描每个相关包,或仅扫描所有内容,例如@ComponentScan("com.sg.")

    您的映射将被正确设置:

    s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String com.sg.members.controller.MainController.getHomePage()
    

    其他一些提示:Thymeleaf 期望任何 HTML-Tag 再次关闭。您的 home.html 会抛出一些错误,但只需关闭标签即可轻松修复。 (例如&lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"/&gt;。注意末尾的“/”。)

    输入、img 和其他所有字段也是如此。

    【讨论】:

    • 您能否向我们展示您的错误处理配置以及您可能拥有的任何 thymeleaf 解析器?
    • 我没有使用任何解析器。只是 pom 中的一个 thymleaf 依赖项。
    • 你的错误处理程序呢?究竟是什么重定向到 /error?
    • 当我尝试访问 root : localhost:8181 时,它会重定向到 localhost:8181/error
    • 你必须有某种配置导致重定向到那个错误映射,否则它是无用的。我假设你不会手动调用 /error。
    猜你喜欢
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2017-04-04
    • 2017-01-26
    • 2015-03-12
    • 1970-01-01
    • 2018-12-17
    • 2017-09-11
    相关资源
    最近更新 更多