Как вы обновляете один столбец таблицы при весенней загрузке, не обновляя остальные атрибуты? - PullRequest
0 голосов
/ 23 января 2020

Я разрабатываю систему продаж автомобилей с использованием пружинной загрузки. Когда автомобильный дилер публикует автомобиль в продаже, по умолчанию для него устанавливается состояние «В ОЖИДАНИИ», и администратор должен одобрить сообщение. Я хочу обновить статус этого автомобиля, не обновляя другие атрибуты автомобиля (milleage, цена, модель и т. Д. c). Итак, я попытался с помощью пут, но я получаю ошибку, что POST не допускается Вот мой код, так далеко. Любые идеи для чего-то похожего на mysql набор операторов columnName = newValue, где id = id, который мой код выбирает с использованием @ PathVariable.

Репозиторий продуктов (для обновления одного столбца)

@Modifying
@Query(value = "update Product p set p.status = :status where  p.carId= :carId")
void setUpdateStatus (@Param("status") String status, @Param("carId") Long carId); 

Метод обслуживания продукта для обновления статуса.

   public void updateStatus( Long carId){
   productRepository.setUpdateStatus("APPROVED",carId);
   }

Метод контроллера, который использует @PathVariable для получения идентификатора продукта из URL-адреса представления.

@PutMapping("/updateStatus/{carId}")
public void updateStatus(@PathVariable("carId") Long carId){
    productService.updateStatus(carId);

}

Это моя часть просмотра тимелист, которая отвечает за URL, с которого я получаю идентификатор.

<form action="#" th:action="@{'/updateStatus/'+${pending.carId}}" th:method="put" >
                <input type="hidden" name="_method" value="put" />
                <button type="submit" id="Approve" name="Approve"> </button>
 </form>

Я ожидал, что идентификатор использоваться для обновления статуса до УТВЕРЖДЕНО. но я получаю сообщение об ошибке Mehtod POST не допускается. Как вы можете видеть из вышеизложенного, мой метод = "поставить" не POST. Я не знаю, что происходит не так.

1 Ответ

1 голос
/ 23 января 2020

Возможно, в вашем проекте активирована весенняя защита, по умолчанию защита csrf включена, когда вы используете весеннюю безопасность, поэтому вам нужно отправить параметры csrf в заголовок запроса или деактивировать csrf.

Здесь вы можно посмотреть, как отправить параметры заголовка: Spring MVC Запрос PUT возвращает 405 Метод не разрешен

А вот как отключить csrf: Включить HTTP-запрос POST в Spring Boot

Использовать второй вариант только для разработки! Вы можете сделать свое приложение небезопасным, отключив защиту crsf.

...