как решить Запрос метода «GET» не поддерживается - PullRequest
0 голосов
/ 26 января 2019

Я получаю предупреждение ниже как

WARN [org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver] (default task-1) Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]

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

Пожалуйста, найдите ниже код, отображенный контроллером deleteproducts:

@RequestMapping(value="/deleteproducts", method= RequestMethod.POST)
    public String deleteProduct(@PathVariable("productId")int productId) {
        IProductsDAO ip = new ProductsDAOImpl();
        boolean b = ip.deleteProduct(productId);
        if(b)
            return "success";
        else
            return "deleteproducts";

вот мое представление jsp:

<body>
<form id="update product form" action="${pageContext.request.contextPath}/deleteproducts" method="post" role="form" style="display: none;">
    <div class="form-group row">
        <label for="product Id" class="col-sm-2 col-form-label">Id</label>
        <div class="col-sm-10">
            <input type="text" name="productId" class="form-control" id="productid" placeholder="Enter the product Id you want to delete">
        </div>
    </div>  
</form>
</body>

DAOimplementation for delete Вызов метода:

public boolean deleteProduct(int productId)
    {
        boolean b = true;
        try
        {
            sess.beginTransaction();
            Products p = (Products)sess.load(Products.class, new Integer(productId));
            sess.delete(p);
            sess.getTransaction().commit();
        }catch(Exception ex)
        {
            sess.getTransaction().rollback();
            b = false;
        }
        return b;
    }

может кто-нибудь теперь сказать мне, какие изменения я должен внести в мой код, чтобы это исправить?

Спасибо!

edit 1:

@DeleteMapping(value="/deleteproducts/{productId}")
    public String deleteProduct(@PathVariable("productId")int productId) {
        IProductsDAO ip = new ProductsDAOImpl();
        boolean b = ip.deleteProduct(productId);
        if(b)
            return "success";
        else
            return "deleteproducts";
    }

все еще получает предупреждение как:

WARN  [org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver] (default task-1) Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Как я думаю, форма запроса собирается методом GET, вы можете попробовать javascript для отправки формы с вызовом функции.

Пожалуйста, найдите ниже код:

 <form id="update product form" action="${pageContext.request.contextPath}/deleteproducts"  method="POST">
  <div class="form-group row">
     <label for="product Id" class="col-sm-2 col-form-label">Id</label>
        <div class="col-sm-10">
        <input type="text" name="productId" class="form-control" id="productid" placeholder="Enter the product Id you want to delete">
         </div>
        <div class="col-sm-10">
         <input type="button"  value="submit" onclick="javascript:formSubmit()" name="submit" ></a>
        </div>
       </div>
 </form>



 <script>
    function formSubmit() {
if(!isEmpty(document.from.productId.value)){ //even you can validate values in productId 
    document.form.method='POST';
    document.form.action='/deleteproducts';
    document.form.submit();
}
    )
    <script>
0 голосов
/ 26 января 2019

я не понимаю @RequestMapping(value="/deleteproducts", method= RequestMethod.POST) Что ты хочешь этим сказать? Вы делаете RequestMapping хотите удалить запись и метод POST?

Я бы посоветовал следовать стандартному способу разработки. Если вы хотите удалить DeleteMapping, для POST используйте PostMapping, а для получения некоторой информации вы можете использовать GetMapping.

В идеале это должно быть

@DeleteMapping("/deleteproducts/{id}") public void deleteStudent(@PathVariable long id) { deleteproductsRepository.deleteById(id); or some CRUD logic to delete }

Вы можете обратиться к этой ссылке для лучшего понимания REST

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