POST http://localhost:8080/xxx/ 400(Bad Request)

问题描述

在内容分类管理页面,只能删除新添加的节点,而不能删除以前添加的节点。
浏览器显示的错误是:POST http://localhost:8080/xxx 400(Bad Request)
POST http://localhost:8080/xxx/ 400(Bad Request)_第1张图片

问题分析

通过网上查询,发现这个错误是由于前台向后台传数据传不完整造成的。

删除时,前台需要向后台传两个值:待删除节点的 id:id 和该节点的父节点id:parentId。
POST http://localhost:8080/xxx/ 400(Bad Request)_第2张图片
先看添加操作的代码:
POST http://localhost:8080/xxx/ 400(Bad Request)_第3张图片
在添加的时候,Service 层创建了一个新的pojo对象contentCategory,把它插到数据库中,然后传给 Controller层。
POST http://localhost:8080/xxx/ 400(Bad Request)_第4张图片
Controller把这个数据以json的形式传递给了前台,然后前台通过调用 getContentCatList 这个方法就可以显示。

在删除的时候,前台需要传给后台两个数据:要删除的这个节点的 id 和 这个节点父节点的id,parentId。由于我们是新添加的节点,在添加的时候设定了父节点id:

contentCategory.setParentId(parentId);

而该节点id是自增长的,不用我们设置,后台往前台传的时候就用这两个值。

所以,我们在删除时候,前台可以把这两个值传给后台,后台能得到这两个数据,因此可以正常删除。

那为什么以前添加的数据就不能删除了呢?或者插入节点后,重启浏览器就不可以删除了呢?

打开浏览器,首先会调用 getContentCatList 显示方法,显示数据库中的数据。我们需要返回给前台异步Tree对应的json数据。EUTreeNode 就是异步 Tree 对应的 json 格式的pojo。
POST http://localhost:8080/xxx/ 400(Bad Request)_第5张图片
这时候,只传给了前台当前节点的id值,而没有传parentId值。这样,我们在删除的时候,前台就没办法传递给我们需要的这两个值,因此显示出了上面的错误。

解决方法

在 EUTreeNode 这个 pojo 中添加 parentId 这个属性。
POST http://localhost:8080/xxx/ 400(Bad Request)_第6张图片
然后在显示的时候,设置当前节点的 parentId 值:
POST http://localhost:8080/xxx/ 400(Bad Request)_第7张图片
这样,在显示的时候,我们后台就把 id 和 parentId 两个值都传给前端了。(只不过前端需要显示异步Tree的形式,只需解析id,state,text三个属性)

接着进行删除,前端就可以正常传递给我们需要的 id 和 parentId 了,即可进行正常删除。

你可能感兴趣的:(java)