Почему я получаю ошибку 404 использую Spring MVC framework? - PullRequest
0 голосов
/ 28 марта 2020

Когда я отправляю запрос http://localhost: 8080 / pets Мой ответ сервера 404! Код на github: https://github.com/Teemitze/petstore

Я строю файл войны. Версия пружины 2.2.6. РЕЛИЗ

@Controller
@RequestMapping("/pets")
public class PetsController {

    @Autowired
    PetRepository petRepository;

    @PostMapping("/addPet")
    public void addPet(Pet pet) {
        petRepository.save(pet);
    }

    @GetMapping
    @ModelAttribute
    public String pets(Model model) {
        List<Pet> petList = new ArrayList<>();
        petList.add(getPet());
        petList.add(getPet());
        petList.add(getPet());
        model.addAttribute("pets", petList);
        return "allPets";
    }

    public Pet getPet() {
        Pet pet = new Pet();
        pet.setId(1L);
        pet.setName("Мурзик");
        pet.setPrice(100);
        pet.setBirthday(Date.valueOf("2019-12-12"));
        pet.setSex("М");
        return pet;
    }
}

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Я проверил ваш код и обнаружил несколько проблем.

1) Структура пакета

Перемещение пакетов контроллера, dto, репо в основной пакет (com.petstore)

Поскольку основное приложение находится внутри пакета (com.petstore), а контроллер находится за пределами пакета, поэтому он не может сканировать класс.

2) Используйте аннотацию @Entity для класса сущностей Pet с @. Идентификатор для свойства id

3) Удалите @ModelAttribute из метода pets (), поскольку вы не привязываете ни один параметр метода.

После этого я вижу / pets

enter image description here

0 голосов
/ 28 марта 2020

Проект SpringBoot требует определения некоторых соглашений о конфигурации, которые необходимо соблюдать, чтобы запустить минимальное приложение. Некоторые моменты, которые вы должны учитывать при запуске приложения с весенней загрузкой. Например:

  • Ваш класс SpringBootApplication (PetstoreApplication) должен находиться на уровне каталога выше ваших других пакетов, чтобы он мог сканировать все классы.

enter image description here

  • Если вы хотите использовать SpringData JPA, вам нужно управлять классом вашей модели

    @Data @Entity public class Pet { @Id private long id; private String name; private String sex; private Date birthday; private byte[] photo; private int price; }

, поскольку он обрабатывается репозиторием

public interface PetRepository extends CrudRepository<Pet, Long>

@GetMapping() public String allPets(Model model) {

  • Убедитесь, что ваши html файлы находятся в каталоге ресурсов / шаблонов.

Проверьте справочные документы

spring mvc

данные пружины jpa

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