springboot 框架 java, 带复选框的ztree如何只可以选择 最后一级节点,生成java代码和 js代码
时间: 2024-03-19 11:43:37 浏览: 62
以下是使用 Spring Boot 框架,带有复选框的 ZTree 只能选择最后一级节点的 Java 代码和 JavaScript 代码:
Java 代码:
```java
// 定义 ZTree 节点类
public class ZTreeNode {
private Integer id;
private Integer pId;
private String name;
private boolean open;
private boolean checked;
private boolean isParent;
// getter 和 setter 方法
}
// 获取 ZTree 数据
@RequestMapping("/getZTreeData")
@ResponseBody
public List<ZTreeNode> getZTreeData() {
// 从数据库或其他数据源中获取节点数据
List<Node> nodeList = nodeService.getAllNodes();
// 将节点数据转换为 ZTree 节点
List<ZTreeNode> zTreeNodeList = new ArrayList<>();
for (Node node : nodeList) {
ZTreeNode zTreeNode = new ZTreeNode();
zTreeNode.setId(node.getId());
zTreeNode.setPId(node.getParentId());
zTreeNode.setName(node.getName());
zTreeNode.setOpen(node.getIsOpen());
zTreeNode.setChecked(false);
zTreeNode.setIsParent(node.getIsParent());
zTreeNodeList.add(zTreeNode);
}
return zTreeNodeList;
}
// 保存 ZTree 节点数据
@RequestMapping("/saveZTreeData")
@ResponseBody
public String saveZTreeData(@RequestParam("nodeIds") String nodeIds) {
// 将字符串类型的节点 ID 转换为数组
String[] nodeIdArray = nodeIds.split(",");
// 只保留最后一级节点的 ID
List<Integer> lastLevelNodeIds = new ArrayList<>();
for (String nodeId : nodeIdArray) {
Node node = nodeService.getNodeById(Integer.parseInt(nodeId));
if (node.getIsLeaf()) {
lastLevelNodeIds.add(Integer.parseInt(nodeId));
}
}
// 保存最后一级节点的 ID
nodeService.saveLastLevelNodeIds(lastLevelNodeIds);
return "success";
}
```
JavaScript 代码:
```javascript
// 初始化 ZTree
var setting = {
check: {
enable: true,
chkStyle: "checkbox" // 复选框
},
data: {
simpleData: {
enable: true
}
},
callback: {
// 点击节点时触发
onClick: function(event, treeId, treeNode) {
var treeObj = $.fn.zTree.getZTreeObj(treeId);
treeObj.checkNode(treeNode, !treeNode.checked, false);
}
}
};
var zTreeObj = $.fn.zTree.init($("#ztree"), setting, zTreeNodeList);
// 保存选中的节点
$("#saveBtn").click(function() {
var checkedNodes = zTreeObj.getCheckedNodes(true);
var nodeIds = "";
for (var i = 0; i < checkedNodes.length; i++) {
if (!checkedNodes[i].isParent) {
nodeIds += checkedNodes[i].id + ",";
}
}
if (nodeIds.length > 0) {
nodeIds = nodeIds.substring(0, nodeIds.length - 1);
}
$.ajax({
url: "/saveZTreeData",
type: "POST",
data: {"nodeIds": nodeIds},
success: function(data) {
if (data == "success") {
alert("保存成功!");
} else {
alert("保存失败!");
}
}
});
});
```
上述代码中,Java 部分根据数据库或其他数据源中的节点数据,将其转换为 ZTree 节点,并返回给前端。前端使用 JavaScript 初始化 ZTree,设置复选框样式,以及点击节点时的操作。当用户点击保存按钮时,前端将选中的节点 ID 发送给后端,后端只保留最后一级节点的 ID 并进行保存。
阅读全文