Spring boot не может найти мое представление шаблона. Произошла непредвиденная ошибка (тип = не найден, статус = 404) - PullRequest
0 голосов
/ 15 февраля 2020

Я потратил почти день, пытаясь исправить это без всякой удачи

Я интегрирую пружинный загрузчик mongodb и тимилиф

Вот мой контроллер

@Controller
public class ItemController {
  @Autowired
  private ItemService itemService;

  @GetMapping("/items")
  public String home(Model model) {
    model.addAttribute("items", new ItemEntity());
    List<ItemEntity> items = itemService.findAll();
    model.addAttribute("items", items);
    return "item";
  }
}

это Мой html шаблон

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"/>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
</head>
<body>
<div class="container-fluid">
    <div class="row">
        <div class="col-md-12">
            <h2>FileUpload</h2>
            <form action="" th:action="@{'/fileupload'}" th:object="${item}" method="post"
                  enctype='multipart/form-data'>
                <div class="form-group">
                    <label for="fileupload">File Upload(excel or csv)</label>
                    <input type="file" class="form-control" id="file" name="file" th:field="*{file}"/>
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>
        </div>
        <div class="col-md-12">
            <h2>All items</h2>
            <table class="table table-bordered">
                <thead>
                <tr>
                    <th>height</th>
                    <th>width</th>
                    <th>length</th>
                    <th>weight</th>
                    <th>securityLevel</th>
                    <th>file type</th>
                </tr>
                </thead>
                <tbody>
                <tr th:each="item : ${items}">
                    <td th:text="${item.height}">John</td>
                    <td th:text="${item.width}">Doe</td>
                    <td th:text="${item.length}">john@example.com</td>
                    <td th:text="${item.weight}">john@example.com</td>
                    <td th:text="${item.securityLevel}">john@example.com</td>
                    <td th:text="${item.fileType}">john@example.com</td>
                </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
</body>
</html>

build.gradle

plugins {
    id 'org.springframework.boot' version '2.2.4.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
}

group = 'com.vending'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-devtools'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compile group: 'com.opencsv', name: 'opencsv', version: '4.4'
    compile group: 'org.apache.poi', name: 'poi', version: '3.9'
    compile group: 'commons-io', name: 'commons-io', version: '2.6'
    compile group: 'org.thymeleaf', name: 'thymeleaf', version: '2.0.5'
    compile group: 'nz.net.ultraq.thymeleaf', name: 'thymeleaf-layout-dialect', version: '1.2'
}

test {
    useJUnitPlatform()
}

project structure look like this

У меня также есть эти для mongod внутри приложения. свойства

spring.data.mongodb.database=vending
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017

при запуске VendingApplication и go до http://localhost: 8080 / items я получаю

Страница ошибки Whitelabel Это приложение имеет нет явного сопоставления для / error, поэтому вы видите это как запасной вариант.

Сб 15 фев. 03:26:41 EST 2020 Произошла непредвиденная ошибка (тип = Не найдено, статус = 404). Нет доступных сообщений

похоже, что по какой-то причине Spring не может разрешить представление шаблонов

ОБНОВЛЕНИЕ:

Проблема связана с именем базы данных, которая не отображалась мой

application.properties
spring.data.mongodb.database=your_db_name

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Для того, кого это может касаться, проблема для меня возникла из имени базы данных в application.properties spring.data.mongodb.database

Мне пришлось сопоставить его с моей коллекцией документов

0 голосов
/ 15 февраля 2020

В шаблоне вы используете метод как post

<form action="" th:action="@{'/fileupload'}" th:object="${item}" method="post"

Измените его, чтобы получить и попробуйте

<form action="" th:action="@{'/fileupload'}" th:object="${item}" method="get"

Или в отображении изменения контроллера на @ PostMapping

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...