系列文章目录
文章目录
- 系列文章目录
- 18-添加子节点-目标和思路
- 19-添加子节点-前端:打开模态框
- 20-添加子节点-前端:发送Ajax请求
- ==代码里面实现模拟用户点击重置==
- 21-添加子节点-后端
- ==bug发现 异步的问题 :每次加载数据的时候都要考虑一下异步的问题==
- 22-更新节点-目标和思路
- 23-更新节点-前端:打开模态框
- 24-更新节点-前端:发送Ajax请求
- 25-更新节点-后端
- 26-更新节点-小结
- 27-删除节点-目标和思路
- 28-删除节点-前端:打开模态框
- 29-删除节点-前端:发送Ajax请求
- 30-删除节点-后端
- ==【非常重要的@RequestBody知识】当请求体是Json对象字符串的时候,我们就必须要告诉服务器==
- ==@RequestParam和@RequestBody 小总结==
- ==31-@RestController注解=@ResponseBody+@Controller==
18-添加子节点-目标和思路
菜单的维护(增删改查)和我们前面所学的角色管理基本上是一样的了
首先要 有 思路:
19-添加子节点-前端:打开模态框
模态框这里我们直接复制粘贴就行了
主要是里面涉及的前端较多,手写的话,要花不少时间
我们到时候再来研究就好,毕竟不是前端工程师,不需要现在就对前端那么精通
return false 这一段代码不要漏掉,这是取消默认行为不写这段的话,就直接跳转走了
其实我们不可忽略的一个事情就是我们在保存一个节点的时候 必须要知道父节点是谁
那么这个 pid怎么得到呢
如上图,获取到父 id 后 打开模态框即可
下一步是确认添加,即 给 模态框里面的保存按钮添加单击相应函数,并且发送Ajax请求
20-添加子节点-前端:发送Ajax请求
这里的 $.trim() 意思是 删除字符串开始和末尾的空格ajax的参数我们对照着实体类来写
清理表单我们还没做,要怎么做呢?
我们发现,点一下,重置,可以恢复到初始状态
那么我们就要想想,怎么我们在代码里面直接调用一下重置,不需要用户手点
其实也可以,我们还是要绑定一个单击响应函数
如下
代码里面实现模拟用户点击重置
click里面不传function就相当于点了一下按钮
接下来就是后端
21-添加子节点-后端
确认一下 id 是否 是 自增
bug发现 异步的问题 :每次加载数据的时候都要考虑一下异步的问题
有没有这种情况,我们还添加完就加载数据了异步当然是有可能的
所以我们要加个参数
这个问题不一定能每次重现,但是却是一个未知的隐患,应该必须要处理
还有一种处理方式就是代码的位置改动一下,如下。不过我们为了练习一下异步和同步推荐用上面的方式
工作中用这种比较简单,少写一行代码
这样添加就没啥问题了
22-更新节点-目标和思路
更新与新增最大的区别就是要回显
那么树形开发的回显怎么做
其中的思路之一是,我们拿到id然后去数据库里面查一下,拿到node对象,
再放到前端的模态框里面去
23-更新节点-前端:打开模态框
复制一下代码
然后测一下点击修改 能不能打开模态框
效果如下:
文本框简单
那单选按钮怎么处理呢?
注意要放数组里面
测试看看
24-更新节点-前端:发送Ajax请求
25-更新节点-后端
特别注意这里
26-更新节点-小结
略
27-删除节点-目标和思路
28-删除节点-前端:打开模态框
最后效果:
29-删除节点-前端:发送Ajax请求
注意操作完成之后需要关闭模态框
30-删除节点-后端
注意
猜一下,如果这样获取参数会不会报错
答案是 会,错误码是415
错误码
即使是这样还是会报错,因为思路错了,@RequestBody 接收的必须是前端那边就是json对象的字符串数据,要进行转换
除非是像这样转换一下
前端请求传Json对象则后端使用@RequestParam;
前端请求传Json对象的字符串(前端必须要用contentType说明请求体内容)
则后端使用@RequestBody,参数类型有要求,必须要跟前端对应,一般为对象等
【非常重要的@RequestBody知识】当请求体是Json对象字符串的时候,我们就必须要告诉服务器
正确的案例:对象
正确案例2:数组
window.roleIdArray 这里面存的 是数组
这样后端才能用 @RequestBody List ids 去接收
这样后端才能用 @RequestBody List ids 去接收
扯回来,如果是最开始那样,前端请求的是Json对象则后端使用@RequestParam即可
如下 ,后端用@RequestParam接收参数即可解决
@RequestParam和@RequestBody 小总结
总结一下就是 三种前端传参方式,对应后端三种不同的接收参数的方式
31-@RestController注解=@ResponseBody+@Controller
我们发现一个问题,每个方法都有@ResponseBody 根据我们对springMvc 的理解,那么肯定可以提取
java最爱的就是各种提取了
我们下面就来试试
先注释一下代码
== 这样@ResponseBody 不用写了 @Controller 也不用写了==
分布式架构里面也经常会用@RestController