当前位置: 首页 > 知识库问答 >
问题:

控制器类找不到html模板

仲孙善
2023-03-14

我的目录

我试图创建学校的Spring启动应用程序,列出书籍到一个HTML页面从数据库与控制器。

就我个人而言,我认为问题在于控制器由于某种原因无法找到模板。因为当我通过chrome导航到想要的模板时,它只在页面上显示“booklist”,其他什么都没有。

我尝试创建一个全新的项目,并将代码从其他文件复制到新文件中,但没有结果。

我的控制器类:

@Controller
@ResponseBody
public class BookController {
@Autowired
BookRepository bookRepository;

@RequestMapping(value = "/books", method = RequestMethod.GET)
public String getBooks(Model model) {
    List<Book> books =  (List<Book>) bookRepository.findAll();
    model.addAttribute("books", books);
    return "booklist";
}

我的html模板:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Book List</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Books</h1>
<table>
    <tr>
        <th>Id</th>
        <th>Title</th>
        <th>Year</th>
        <th>Isbn</th>
        <th>Price</th>
    </tr>

    <tr th:each="book : ${books}">
        <td th:text="${book.id}">id</td>
        <td th:text="${book.title}">title</td>
        <td th:text="${book.year}">year</td>
        <td th:text="${book.isbn}">isbn</td>
        <td th:text="${book.price}">price</td>

    </tr>
</table>
</body>
</html>

波姆。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>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>hh.swd20</groupId>
<artifactId>Bookstore</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Bookstore</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</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>
        </plugin>
    </plugins>
</build>

</project>

应用属性文件:

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.jpa.show-sql=true

共有2个答案

越星晖
2023-03-14

你可以试试这个。

Hit:localhost://你的端口号/api/书籍

//@Controller
  @RestController
//@ResponseBody
  @RequestMapping("/api")
  public class BookController {
  @Autowired
  BookRepository bookRepository;

  @GetMapping(value = "/books", method = RequestMethod.GET)
  public ModelAndView getBooks(Model model) {
  List<Book> books =  (List<Book>) bookRepository.findAll();
  model.addAttribute("books", books);
  ModelAndView mav = new ModelAndView("booklist");
  return mav;

}
湛宝
2023-03-14

从您的控制器类中删除注释@响应体,因为:

这个

然后,Spring MVC将使用返回的字符串booklist解析命名的HTML模板文件。

默认情况下,模板文件(例如,booklist.html)将在默认模板目录src/main/resources/templates中查找。

否则,请确保已正确配置ViewResolver。

对于Thymeleaf,您必须添加对Maven POM的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

另见此Spring靴

 类似资料:
  • 我在Scene Builder中为Eclipse中的JavaFX项目创建了一个非常简单的fxml。当我尝试运行它时,由于未找到controller类,我得到了LoadException。 附加的包资源管理器和错误的截图 如果你能告诉我是什么原因造成这个问题,我将不胜感激。

  • 我使用SpringBoot 1.5.9并创建了: 我的简单控制器正在处理“/”并转发到index.html: 根据SpringBoot文档,应该呈现下的静态内容。如果创建文件夹并将我的放在那里,并在pom.xml中包含spring-boot-starter-thymeleaf依赖项,那么一切都很好。但是,我很困惑为什么src/main/resources/static/index.html的基本呈

  • 我用Anaconda创建了一个虚拟环境。激活后,我可以启动python3 shell并导入keras库,我得到以下警告,但在其他情况下它似乎可以工作。 /home/ryan/anaconda3/envs/spyderudemy/lib/python3.6/site packages/h5py/init.py:36:FutureWarning:将issubdtype的第二个参数从转换为。将来,它将被

  • 问题内容: 我是有经验的新手,并尝试使用1.3新版本。 这是我的代码 控制台显示此错误。 但是当我将角度源更改为 然后就可以了。我用铬。任何人都让我知道问题可能出在哪里。 问题答案: 默认情况下,1.3中不再支持全局控制器功能。请参阅更改日志 … $ controller将不再在窗口上查找控制器。在控制器上查看窗口的旧行为最初旨在用于示例,演示和玩具应用程序。我们发现允许全局控制器功能会鼓励不良做

  • 我使用mn create-app example.micronaut.complete创建了一个新的micronaut应用程序 之后,我使用intellij打开了项目,并将一个新类作为TestController添加到项目中,代码如下: 但我得到了

  • 是关于JavaFX的。当我想在Scene Builder中注入fx:id时,我会得到这样的警告: 在FXML控制器类中找不到id为'something'的可注入字段。 我想忽略它,并创建了一个函数,但它也不起作用。我创建了mainController类并将其添加到我的FXML文件中。以下是我的代码… MainController.java 我在我的旧项目中做了同样的事情,它们像一个魅力一样工作。但