This application has no explicit mapping for /error, so you are seeing this as a fallback

220
27 февраля 2022, 09:00

При запуске проекта на Java, с использованием Spring появляется ошибка: "This application has no explicit mapping for /error, so you are seeing this as a fallback." Данное приложение представляет собой форму регистрации, с использованием Hibernate. Архитектура проекта:

Код класса UsersMVCController пакета controller:

package controller;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import entity.Users;
import service.UsersService;
@Controller
@RequestMapping("/")
public class UsersMVCController {
    @Autowired
    UsersService service;
    @GetMapping("/registration")
    public String registration()
    {
        return "registration";
    }
    @RequestMapping(path = "/createUser", method = RequestMethod.POST)
    public String createUser(Users user)
    {
        service.createUser(user);
        return "redirect:/";
    }

}

Код класса Users пакета entity:

package entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="Users")
public class Users {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long ID_USER;
    @Column(name="External_ID")
    private Long External_ID;
    @Column(name="FirstName")
    private String FirstName;
    @Column(name="SecondName")
    private String SecondName;
    @Column(name="Email")
    private String Email;
    @Column(name="Login")
    private String Login;
    @Column(name="Password")
    private String Password;
    @Column(name="Phone")
    private String Phone;
    @Column(name="Photo")
    private String Photo;
    @Column(name="ID_Role")
    private Long ID_Role;
    public Users() {
    }
    public void setID_USER(Long ID_USER) {
        this.ID_USER = ID_USER;
    }
    public void setExternal_ID(Long external_ID) {
        External_ID = external_ID;
    }
    public void setFirstName(String firstName) {
        FirstName = firstName;
    }
    public void setSecondName(String secondName) {
        SecondName = secondName;
    }
    public void setEmail(String email) {
        Email = email;
    }
    public void setLogin(String login) {
        Login = login;
    }
    public void setPassword(String password) {
        Password = password;
    }
    public void setPhone(String phone) {
        Phone = phone;
    }
    public void setPhoto(String photo) {
        Photo = photo;
    }
    public void setID_Role(Long ID_Role) {
        this.ID_Role = ID_Role;
    }
    public Long getID_USER() {
        return ID_USER;
    }
    public Long getExternal_ID() {
        return External_ID;
    }
    public String getFirstName() {
        return FirstName;
    }
    public String getSecondName() {
        return SecondName;
    }
    public String getEmail() {
        return Email;
    }
    public String getLogin() {
        return Login;
    }
    public String getPassword() {
        return Password;
    }
    public String getPhone() {
        return Phone;
    }
    public String getPhoto() {
        return Photo;
    }
    public Long getID_Role() {
        return ID_Role;
    }
}

Код интерфейса UsersRepository пакета repository:

package repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import entity.Users;
@Repository
public interface UsersRepository extends CrudRepository<Users, Long> {
}

Код класса UsersService пакета service:

package service;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import entity.Users;
import repository.UsersRepository;
@Service
public class UsersService {
    @Autowired
    UsersRepository repository;
    public Users createUser(Users user)
    {
        Optional<Users> userOptional = repository.findById(user.getID_USER());
        Users newUser= userOptional.get();
        newUser.setFirstName(user.getFirstName());
        newUser.setSecondName(user.getSecondName());
        newUser.setEmail(user.getEmail());
        newUser.setLogin(user.getLogin());
        newUser.setPassword(user.getPassword());
        newUser.setPhone(user.getPhone());
        newUser.setPhoto(user.getPhoto());
        newUser.setID_Role(user.getID_Role());
        newUser = repository.save(newUser);
        return newUser;
    }

}

Код страницы registration.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <title>Add Employee</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css">
</head>
<body>
<div class="container my-5">
    <h3> Registration</h3>
    <div class="card">
        <div class="card-body">
            <div class="col-md-10">
                <form action="#" th:action="@{/createUser}" th:object="${user}" method="post">
                    <div class="row">
                        <div class="form-group col-md-8">
                            <label for="name" class="col-form-label">First Name</label>
                            <input type="text" th:field="*{FirstName}" class="form-control"
                                   id="FirstName" placeholder="First Name" />
                        </div>
                        <div class="form-group col-md-8">
                            <label for="name" class="col-form-label">Last Name</label>
                            <input type="text" th:field="*{SecondName}" class="form-control"
                                   id="SecondName" placeholder="Last Name" />
                        </div>
                        <div class="form-group col-md-8">
                            <label for="email" class="col-form-label">Email</label>
                            <input type="text" th:field="*{Email}" class="form-control"
                                   id="Email" placeholder="Email Id" />
                        </div>
                        <div class="form-group col-md-8">
                            <label for="email" class="col-form-label">Email</label>
                            <input type="text" th:field="*{Login}" class="form-control"
                                   id="Login" placeholder="Login" />
                        </div>
                        <div class="form-group col-md-8">
                            <label for="email" class="col-form-label">Email</label>
                            <input type="text" th:field="*{Password}" class="form-control"
                                   id="Password" placeholder="Password" />
                        </div>
                        <div class="form-group col-md-8">
                            <label for="email" class="col-form-label">Email</label>
                            <input type="text" th:field="*{Phone}" class="form-control"
                                   id="Phone" placeholder="Phone" />
                        </div>
                        <div class="form-group col-md-8">
                            <label for="email" class="col-form-label">Email</label>
                            <input type="text" th:field="*{ID_Role}" class="form-control"
                                   id="Phone" placeholder="ID_Role" />
                        </div>

                        <div class="col-md-6">
                            <input type="submit" class="btn btn-primary" value=" Submit ">
                        </div>
                        <input type="hidden" id="id" th:field="*{ID_User}">
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>
</body>
</html>

Если вводить locoalhost:8080/createUser или locoalhost:8080/registration.html, то возникает та же ошибка:

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Answer 1

У тебя неправильно расположены папки в проекте. Класс с методом main сканирует методами спринга все твое приложение и для этого должен быть расположен в корне проекта. Допустим, корнем у тебя выступает папка com.registration2.registration2 В нее необходимо поместить все остальное(папки controller, entity, repository etc) В итоге структура проекта должна получиться примерно такая:

Answer 2

Уточню ответ Степы Фомичева.

На данном скриншоте Вы можете увидеть как должны располагаться папки.

READ ALSO
Какие есть альтернативы TreeSet

Какие есть альтернативы TreeSet

Решил задачу, но как я понял просто TreeSet без лишних методов для сортировки классов не годитсяВыдает ошибку: cannot be cast to class java

163
Factory method - Фабричный метод

Factory method - Фабричный метод

Зачем нужен фабричный метод?

109
добавлять значения в firebase database сверху

добавлять значения в firebase database сверху

Весь цикл записи и чтения работает на ура, но новые значения появляются снизу БД:

204
Вращение фигуры во круг точки

Вращение фигуры во круг точки

Такая проблема: в поставленной задаче требуется сделать вращение фигуры вокруг своего центра

93