通过jsp - spring Boot 中的表单使用rest controller,controller删除数据库中使用ID的数据

ttcibm8c  于 2022-12-23  发布在  Spring
关注(0)|答案(1)|浏览(108)

我正在执行一个删除操作,使用spring Boot @RestController和@Controller来处理它并将其发送到视图JSP页面。我收到一个ID为null的错误。我不理解它,我尝试了几个基于搜索的步骤,但没有帮助。

@静止控制器如下:

@DeleteMapping(path = "shoelist/{id}")
    public ResponseEntity delete(@PathVariable Long id) {
        ShoeData data = shoeService.deleteById(id);
        
        if(data != null) {
            // noContent means it would return 204 status code 
            return ResponseEntity.noContent().build();
        }
        
        return ResponseEntity.notFound().build();
    }

@控制器如下:

@RequestMapping(value = "deletebyid", method=RequestMethod.GET)
    public String deleteById( Long id) {
        ResponseEntity data = resource.delete(id);
        return "redirect:entry";
    }

JSP页面如下:

<h3>To delete an Item:</h3>
    <form action="deletebyid" method="get">
        Enter Shoe name: <input type="text" name="shoename"><br>
        <button>Submit</button>
    </form>

错误堆栈跟踪为:

出现错误(类型=内部服务器错误,状态=500)。无法调用“java.lang.Long.longValue()”,因为“id”为空。无法调用“java.lang.Long.longValue()”,因为在com.运动鞋.基础包.控制器.仓库控制器.deleteById(仓库控制器. java:85)上的com.运动鞋.基础包.资源.RestfulResource.delete(RestfulResource.java:55)中的“id”为空

并且在URL中显示以下内容:

http://localhost:8080/deletebydyid?shoename = 1中指定的地址
我提到id的值为1,但它是为shoename赋值的。
这里很混乱。请帮助我理解如何执行删除操作。

5us2dqdw

5us2dqdw1#

我自己解决了这个问题。我在JSP中犯了一个愚蠢的错误,以前的JSP是:

<h3>To delete an Item:</h3>
    <form action="deletebyid" method="get">
        Enter Shoe name: <input type="text" name="shoename"><br>
        <button>Submit</button>
    </form>

name属性必须是Id!!!我的错误。

<h3>To delete an Item:</h3>
    <form action="deletebyid" method="get">
        Enter Id: <input type="text" name="id"><br>
        <button>Submit</button>
    </form>

现在它工作得很好。

相关问题