Изменение вывода количества просмотров
В предыдущем уроке количество просмотров выводилось числом. Теперь оно отображается как текст «Просмотров» жирным шрифтом, за которым следует число просмотров. Реализуйте это, используя 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(). Перенаправляем на главную страницу.
После этих изменений функционал добавления, редактирования и удаления статей будет работать.