技术标签: Java
在网页中我们经常会用到三级联动下拉菜单,而从后台获得的数据一般是json格式的,故需要返回三级json对象,另外有一些特殊情况也需要用到三级的json来实现。
package com.soecode.hbdw.powstation.node;
import java.util.List;
public class Node1 {
private String name;
private List<Node2> cName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Node2> getcName() {
return cName;
}
public void setcName(List<Node2> cName) {
this.cName = cName;
}
}
package com.soecode.hbdw.powstation.node;
import java.util.List;
public class Node2 {
private String name;
private List<String> cName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getcName() {
return cName;
}
public void setcName(List<String> cName) {
this.cName = cName;
}
}
//显示所有
@ResponseBody
@RequestMapping(value = "/queryAll")
private List<Node1> getlist(Model model) {
List<PowStation> powStations=powStationService.getList();
int i,j,k;
//flag1和flag2用以标志对象存在与否,存在为false,否则为true
Boolean flag1,flag2;
List<Node1> nodes=new ArrayList<Node1>();
for(i=0;i<powStations.size();i++){
PowStation powstation=powStations.get(i);
String string1=powstation.getSubunit();
String string2=powstation.getName();
String string3=powstation.getNum();
flag1=true;
flag2=true;
if (string1!=null) {
Node1 node1=new Node1();
Node2 node2=new Node2();
List<String> list1=new ArrayList<String>();
List<Node2> list2=new ArrayList<Node2>();
for(j=0;j<nodes.size();j++){
if (string1.equals(nodes.get(j).getName())) {
flag1=false;
//break;
for(k=0;k<nodes.get(j).getcName().size();k++){
if (string2.equals(nodes.get(j).getcName().get(k).getName())) {
//设置node2结点,并添加node2结点到node1
node2.setName(string2);
list1=nodes.get(j).getcName().get(k).getcName();
list1.add(string3);
node2.setcName(list1);
//设置node1结点,并添加node2结点到nodes
node1.setName(string1);
list2=nodes.get(j).getcName();
list2.set(k, node2);
node1.setcName(list2);
nodes.set(j, node1);
flag2=false;
break;
}
}
if (flag2) {
//设置node2结点,并添加node2结点到node1
node2.setName(string2);
//list1=node2.getcName();
list1.add(string3);
node2.setcName(list1);
//设置node1结点,并添加node2结点到nodes
node1.setName(string1);
list2=nodes.get(j).getcName();
list2.add(node2);
node1.setcName(list2);
nodes.set(j, node1);
}
}
}
if(flag1){
//设置node2结点,并添加node2结点到node1
node2.setName(string2);
list1.add(string3);
node2.setcName(list1);
//设置node1结点,并添加node2结点到nodes
node1.setName(string1);
list2.add(node2);
node1.setcName(list2);
nodes.add(node1);
}
}
}
return nodes;
}
java对象实际以树的结构存储,以多级列表List和自定义javaBean相结合来实现树的存储,并通过@Responsebody注解来实现将返回值自动转化为三级json的对象。
其中@RequestMapping(value = "/queryAll")是用来实现页面地址映射的,在这里可以不用管它。
powStations是一个List列表对象,PowStation是一个pojo,包括id和表单的三级元素,第一级subunit,第二级name,第三级num。
另外,需要注意第一个if判断,string1获取的对象是通过PowStation从数据库中获取的,当对象为null时,不能用equals()和matchs()判断,因为string1对象相当于未初始化,没有目标。
文章浏览阅读8.2k次,点赞5次,收藏56次。一、什么是探索性测试探索式测试,最早是由测试专家 Cem Kaner 博士在 1983 年提出的,并受到当时语境驱动的软件测试学派的支持。后来,Cem Kaner 博士在佛罗里达工学院的同事 James A. Whittaker,凭借着在微软和谷歌担任测试架构师和测试总监的经验积累,撰写了最早的探索式测试书籍(Exploratory Software Testing),扩展了探索式测试的概念和方法。常用于质量管理的戴明环(PDCA)是按照Plan(计划)、Do(执行)、Check(检查)和Act(处_探索性测试
文章浏览阅读5.3k次。以下由驾驶员填写 住址 住址2 联系电话 ..._table嵌套table
文章浏览阅读2.2k次。package utils;import org.apache.commons.lang.StringUtils;import org.apache.poi.hssf.usermodel.HSSFDateUtil;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellType;im..._cell.getnumericcellvalue() 怎么转换为string
文章浏览阅读1.9k次。我们接入一些三方sdk 微信,京东,淘宝的时候会发现,打开了三方的app后,对方有个返回商家或者返回app 的功能,这个是怎么实现的呢,这里先用微信来说接入微信支付的都知道,集成微信支付时必须在我们的包名下创建wxapi文件夹里面有一个WXPayEntryActivity。启动Activity 的方式大家不陌生,通过intent有显示启动和隐示启动两种微信sdk 要求开发者建立固定的wxapi.WXPayEntryActivity,很明显微信这里用的是显示启动的方式,通过如下代码可以启动对应的a_app里插了一个外部的插件,我要怎么跳回自己的app啊?
文章浏览阅读520次。如今生活节奏也是不断加快,越来越多的喜欢看书的人选择通过网上在线租赁图书方式租赁图书,为了更好的方便消费者和图书馆管理人员,结合目前流行的在线经营理念,让每一本图书能够让更多的读者阅读。该系统前端使用JQuery框架对DOM操作,后端代码使用Java语言编写的,高效快速。数据库管理系统使用开源软件MYSQL,节约成本。该网站页面简洁,能够让浏览网站的用户快速查询到自己想要获得的信息,并做出相应的处理。_基于ssm框架java图书管理设计zip文件
文章浏览阅读5.7k次。只需要找到idea的然后打开问价增加:-Dfile.encoding=UTF-8 然后重启intellij idea 就行但是这个问题好了之后又出现了一个问题 那就是System.out.println("测试进入");这个在控制台输出的时候会乱码于是在idea 里 打开Tomcat 配置 在VM options 加入 -Dfile.encoding=..._idea +tomcat控制台乱码
文章浏览阅读1k次,点赞27次,收藏24次。① Python所有方向的学习路线图,清楚各个方向要学什么东西② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论④ 20款主流手游迫解 爬虫手游逆行迫解教程包⑤ 爬虫与反爬虫攻防教程包,含15个大型网站迫解⑥ 爬虫APP逆向实战教程包,含45项绝密技术详解⑦ 超300本Python电子好书,从入门到高阶应有尽有⑧ 华为出品独家Python漫画教程,手机也能学习。_python 软件 实例
文章浏览阅读857次。问题:当你初次运行keras库时,需要下载,如VGG19,提示:Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5并下载缓慢。解决方法:1.在浏览器打开VGG19下载地址2.下载完成后复制到.keras\models(C:\Users\Administrator._vgg16() downloading data
文章浏览阅读2.8k次。青龙面板+nvjdc青龙面板是一个国人开发的,自持脚本运行的工具。官网是这么描述的:支持python3、javaScript、shell、typescript 的定时任务管理面板。我们这里看中是它可以定时执行javaScript脚本,那么就可以挂载执行薅羊毛脚本nvjdc 是对青龙面板功能的延伸,它的主要功能是帮助我们使用验证码的方式来获取京东App的cookie并管理安装docker我这里是以一台Linux20.04的机器来示例,如果你的机器已经安装了docker,这一步可以跳过只需要一句命_青龙脚本 nvjdc
文章浏览阅读2.3k次。判断一个数组里面的每一项的值,是否包含另一个数组里面的每一项。我们只需要先定义一个新的数组来存储着2个数组里面值一样的。var arr1 = [ 1, 2, 3,4,5, 6 ,7];var arr2 = [1, 3 , 5 ];varitemAry = []然后拿 ar1 和 arr2 循环遍历,判断 得到新的数组itemAry最后 varflag =false; 判断 新数组的length 和 arr2数组的length 是否相等,如果相等 就 returnfl..._判断两个数组其中
文章浏览阅读2.8k次,点赞2次,收藏10次。上文简单介绍了OTA的分类和流程,本文重点分析Target包。一、Target包结构:二、生成命令研究OTA会发现网上介绍比较多的命令是 make otapackage ,编译完成后,在根目录执行这个命令会生成Target包和完整升级包。其实有单独编译Target 包的命令:make target-files-packageandroid默认情况下,最终生成的Target包在此目录下:..._target_files
文章浏览阅读468次,点赞10次,收藏10次。【代码】C语言:switch处理打折问题。_c语言用switch冲150享受9折,冲200享受8折,显示卡的余额