【问题标题】:Unable to resolve View using Thymeleaf无法使用 Thymeleaf 解析视图
【发布时间】:2018-03-02 15:28:40
【问题描述】:

我是 Thymeleaf 的新手。我正在使用 thymeleaf 在视图部分创建一个 spring-boot 应用程序。

请在我的 pom.xml 文件下方找到[仅依赖项部分]:

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.10.RELEASE</version>
 </parent>
 <properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>
 <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
  </dependencies>

我在以下位置创建了一个 application.properties 文件:src/main/resources

server.port = 8086
spring.mvc.static-path-pattern=/resources/**
spring.thymeleaf.prefix=/WEB-INF/views/
spring.thymeleaf.suffix=.html

以下是我的 Boot Application Main 类:

@SpringBootApplication
@ComponentScan(basePackages="<common package structure>")
public class AdvMain extends SpringBootServletInitializer {

   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
      return application.sources(AdvMain.class);
    }

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

我有一个控制器类如下:

@Controller
public class HomeController {
    @RequestMapping(path = "/info", method = { RequestMethod.GET, RequestMethod.POST })
    public String info(Model model) {
       model.addAttribute("message", "Thymeleaf");
       return "info";
    }

    @RequestMapping(path = "/home", method = RequestMethod.GET)
    public String index() {
       return "index";
    }
 }

当我调用以下网址时:

http://localhost:8086/AddViewer/home

我收到页面未找到错误。

请在下面找到我的 tomcat 控制台日志:

   Mapped "{[/home],methods=[GET]}" onto public java.lang.String <package_Structure>.HomeController.index()
   Mapped "{[/info],methods=[GET || POST]}" onto public java.lang.String <package_Structure>.HomeController.info(org.springframework.ui.Model)
   Mapped URL path [/resources/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
   Tomcat started on port(s): 8086 (http)
   FrameworkServlet 'dispatcherServlet': initialization completed in 29 ms
   No mapping found for HTTP request with URI [/AddViewer/home] in DispatcherServlet with name 'dispatcherServlet'

谁能为此提供任何合适的解决方案???

【问题讨论】:

    标签: java spring spring-boot thymeleaf


    【解决方案1】:

    这不是百里香的问题。
    在您的控制台消息中,您有两个映射,/home/info

    Mapped "{[/home],methods=[GET]}" onto public java.lang.String <package_Structure>.HomeController.index()
    Mapped "{[/info],methods=[GET || POST]}" onto public java.lang.String <package_Structure>.HomeController.info(org.springframework.ui.Model)
    

    但是你提出了一个请求/AddViewer/home。因此,它与请求映射不匹配。

    这样的请求。

    http://localhost:8086/home
    

    【讨论】:

      【解决方案2】:

      如果您使用 thymeleaf,请将您的视图文件放在 src/main/resources/template 中,无需添加这两行 -

      spring.thymeleaf.prefix=/WEB-INF/views/
      spring.thymeleaf.suffix=.html
      

      【讨论】:

      • 已经检查过这个不工作的问题仍然存在。此外,据我所知,视图文件的默认位置是 src/main/resources/template 但可以使用 spring.thymeleaf.prefix/suffix 标签覆盖,就像我做的那样
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 2019-06-11
      • 2019-03-01
      • 2019-02-20
      • 1970-01-01
      • 2016-01-21
      • 2017-03-28
      相关资源
      最近更新 更多