Spring Boot: Редактирование и удаление записей в Java

Изменение вывода количества просмотров

В предыдущем уроке количество просмотров выводилось числом. Теперь оно отображается как текст «Просмотров» жирным шрифтом, за которым следует число просмотров. Реализуйте это, используя HTML-теги <b> для жирного текста и <span> для встраивания числа. Пример:

<b>Просмотров</b> <span>123</span>

Редактирование статьи

Нажатие кнопки «Редактировать» переводит на URL вида /blog/{id}/edit, обрабатываемый контроллером.

Обработчик в контроллере

В BlogController модифицируем метод getBlog() (из предыдущего урока) для обработки /blog/{id}/edit. Создадим метод blogEdit(), принимающий динамический параметр id из URL и модель. Проверка существования записи аналогична предыдущим функциям. Вызываем шаблон blog-edit.html.

Шаблон blog-edit.html

Создаём blog-edit.html, похожий на шаблон добавления статьи, с минимальными изменениями:

  • Заголовок <h1> меняем на «Редактирование статьи».
  • Текст кнопки меняем на «Обновить».
  • Удаляем атрибут action из формы для обработки на той же странице.

Предзаполнение формы

Для предзаполнения формы данными статьи используем цикл, перебирающий массив post. Атрибут value подставляет значения из массива в поля формы. Обратите внимание на заполнение поля fulltext внутри тега <textarea>:

<div>
  <input type="text" name="title" value="${post.title}">
  <textarea name="fulltext">${post.fulltext}</textarea>
</div>

После запуска и нажатия «Редактировать», форма будет предзаполнена.

Обработка данных формы

Создаём функцию blogPostUpdate(), похожую на функцию добавления статьи, для обработки /blog/{id}/edit. Вместо создания объекта, находим существующий с помощью postRepository.findById(id).orElseThrow(), обновляем поля и сохраняем с помощью postRepository.save(). Перенаправляем на главную страницу.

Удаление статьи

Для удаления статьи модифицируем кнопку «Удалить», поместив её в форму с методом POST и атрибутом action вида /blog/{id}/remove.

Обработчик удаления в контроллере

В BlogController создаём функцию blogPostDelete(), обрабатывающую /blog/{id}/remove. Находим запись с помощью postRepository.findById(id).orElseThrow() и удаляем её с помощью postRepository.delete(). Перенаправляем на главную страницу.

После этих изменений функционал добавления, редактирования и удаления статей будет работать.

Что будем искать? Например,программа