在最近的工作中,遇到一个问题,个人所做的简历模块中有两个字段,分别是个人信息中的户口所在地和现居住城市。

前端界面中这两个选项框是用到了二级和三级联动,在向后端传输时希望可以通过数组类型进行传输,例如【000000,000001】

前端页面展示如下:

后台数据库实体类字段设计如下:

registered_residence    户口所在地    varchar(50)

current_city   现居住城市    varchar(50)

简历实体字段设计如下:

//户口所在地

private String registeredResidence;

//现居住城市

private String currentCity;

当选择完户口所在地一栏的省外,就会联动出现省下面对应的市,产生联动效果

在协商传输类型时产生疑问:

1.后端数据库中所定义的这两个类型为String类型

2.前台要求后端存入数组类型

拟定解决方案

一:在Java实体类中创建VO类来新建数据类型为数组类型,此变量用来接收数组,如下:

新增简历个人信息时,前端传入户口所在地和现居住城市,后端需按数组类型接收

否则会报错(数据类型不匹配)

在新增简历个人信息的时候需要按照数组接收,存入数据库后按照字符串存储

所以需要循环拆分,之后在拼接成字符串,然后再存入字符串

/**
* 更新简历个人信息(新增&&修改)
*/
@PutMapping("/updateBrief")
public ResponseEntity updateBrief(@RequestBody BriefVo briefVo){
System.out.println("briefVo:" + briefVo);
Brief brief = new Brief();
BeanUtils.copyProperties(briefVo,brief);
StringBuilder registeredResidence = new StringBuilder();
if(briefVo.getCurrentCitys().length > 0){
for(int i = 0;i<briefVo.getRegisteredResidences().length;i++){
registeredResidence.append(briefVo.getRegisteredResidences()[i]);
if(briefVo.getRegisteredResidences().length - i > 1){
registeredResidence.append("-");
}

}
}
String registeredResidence1 = registeredResidence.toString();
brief.setRegisteredResidence(registeredResidence1);

StringBuilder currentCity = new StringBuilder();
if(briefVo.getCurrentCitys().length > 0){
for(int i = 0;i<briefVo.getCurrentCitys().length;i++){
currentCity.append(briefVo.getCurrentCitys()[i]);
if(briefVo.getCurrentCitys().length- i > 1){
currentCity.append("-");
}
}
}
String currentCity1 = currentCity.toString();
brief.setCurrentCity(currentCity1);

String result = briefService.updateBrief(brief);
return ResponseEntity.ok(result);
}

=====================================================

在存入数据库后,数据库中的字段类型为String

再次查看的时候,还需要把字符串类型的数据变为数组传输到

前端进行交互,否则也会报新增时数据类型不匹配的错误

/**
* 查看简历所有信息(点击查看按钮时显示)
*/
@GetMapping("/findAllCus")
public BriefVo find(Brief brief) {
String briefId = brief.getBriefId();
List<BriefEduExperience> eduExperienceList = eduExperienceService.findEduExperienceByBriefId(briefId);
List<BriefWorkExperience> workExperienceList = workExperienceService.findWorkExpericeByBriefId(briefId);
List<BriefProjectExperience> projectExperienceList = projectExperienceService.findProjectExperienceByBriefId(briefId);
List<BriefTrainExperience> trainExperienceList = trainExperienceService.findTrainExpericeByBriefId(briefId);
List<BriefProSkill> proSkillList = proSkillService.findProSkillByBriefId(briefId);
BriefVo briefVo = new BriefVo();
BeanUtils.copyProperties(brief, briefVo);
briefVo.setEduExperienceList(eduExperienceList);
briefVo.setWorkExperienceList(workExperienceList);
briefVo.setProjectExperienceList(projectExperienceList);
briefVo.setTrainExperienceList(trainExperienceList);
briefVo.setProSkillList(proSkillList);
String registeredResidence = brief.getRegisteredResidence();
String[] registeredResidences = registeredResidence.split("-");
String currentCity = brief.getCurrentCity();
String[] currentCitys = currentCity.split("-");
briefVo.setCurrentCitys(currentCitys);
briefVo.setRegisteredResidences(registeredResidences);
return briefVo;
}

=====================================

在完成这步操作之后,又出现了问题,具体问题记不得太清了,小白请包涵

综上,一系列操作之后发现,后端实现起来比较复杂,需要多次循环,

所以为提高效率,决定让前端来传字符串,为接收存储都方便,

如有更好的解决方案,请指教!!!!!!

希望看到这篇博客的博友可以提供解决方案,欢迎交流分享!!!!!!

前端页面多级联动传输数据类型问题(数组or字符串)后端处理的更多相关文章

  1. HTML前端技术(JS的使用,包括数组和字符串)

    <script type="text/javascript"> /* JS 数组的操作 //concat 连接两个或更多的数组,并返回结果. var arr1 = ne ...

  2. JavaWeb开发使用jsp还是html做前端页面

    一.概述 刚开始学习Javaweb开发的小伙伴都有一个疑惑:用jsp开发前端还是用HTML开发前端呢? 这个疑惑的来源主要是:刚接触完前端但又不深入学习js,接着学习jsp,发现老师们都一直用着jsp ...

  3. JavaScript 多级联动浮动(下拉)菜单 (第二版)

    JavaScript 多级联动浮动(下拉)菜单 (第二版)   上一个版本(第一版请看这里)基本实现了多级联动和浮动菜单的功能,但效果不是太好,使用麻烦还有些bug,实用性不高.这次除了修改已发现的问 ...

  4. 微信小程序-多级联动

    微信小程序中的多级联动 这里用到的案例是城市选择器 先上代码: .wxml <view class="{{boxHide}}"> <view>{{nian} ...

  5. [ PHP+jQuery ] ajax 多级联动菜单的应用:电商网站的用户地址选择功能 ( 二 ) - 仿亚马逊下拉面板

    /** jQuery version: 1.8.3 Author: 小dee Date: 2014.11.8 */ 接上一篇博客. 实现带缓存的仿亚马逊下拉面板 效果图: 图1 初始 图2 点击省份 ...

  6. jQuery插件——多级联动菜单

    jQuery插件——多级联动菜单 引言 开发中,有好多地方用到联动菜单,以前每次遇到联动菜单的时候都去重新写,代码重用率很低,前几天又遇到联动菜单的问题,总结了下,发现可以开发一个联动菜单的功能,以后 ...

  7. MVC实现多级联动

    前言 多级联动(省级联动)的效果,网上现成的都有很多,各种JS实现,Jquery实现等等,今天我们要讲的是在MVC里面,如何更方便.更轻量的实现省级联动呢? 实现效果如下: 具体实现 如图所示,在HT ...

  8. 电商门户网站商品品类多级联动SpringBoot+Thymeleaf实现

    在淘宝.京东等电商网站,其门户网站都有一个商品品类的多级联动,鼠标移动,就显示,因为前端不是我做的,所以不说明前端实现,只介绍后端实现. 搭建部署SpringBoot环境 配置文件配置: 开启了对Th ...

  9. js 多级联动(省、市、区)

      js 多级联动(省.市.区) CreateTime--2018年4月9日17:10:38 Author:Marydon 方式一: 数据从数据库获取,ajax实现局部刷新 方式二: 数据从json文 ...

随机推荐

  1. TCP之服务与首部

    1. TCP 的服务 TCP 通过下列方式提供可靠性: 应用数据被分割成 TCP 认为最适合发送的数据块.与 UDP 不同,UDP 应用程序产生的数据报长度将保持不变.由 TCP 传递给 IP 的信息 ...

  2. FastAdmin 添加新字段后,不显示,可以直接去修改对应的js

  3. php post请求

    public function file_get_contents_post($url, $post){ $options = array( 'http'=> array( 'method'=& ...

  4. mysql timestamp为0值时,python读取后的对象为None

    MySQL数据表中,如果timestamp类型的字段,值为0, python从数据库读取数据后,得到对象是什么类型,是否为None呢? 下面来测试下. 创建数据表 首先创建数据表,其中字段pr_rul ...

  5. ubuntu安装相关

    安装系统参考:http://xinzhi.wenda.so.com/a/1523530837610141 首先进行更新源 sudo apt-get update 安装codeblocks sudo a ...

  6. 如何选择K-Means中K的值

    K-Means需要设定一个簇心个数的参数,现实中,最常用于确定K数的方法, 其实还是人手工设定.例如,当我们决定将衣服做成几个码的时候,其实就是在以 人的衣服的长和宽为为特征进行聚类.所以,弄清楚我们 ...

  7. idea中git远程版本回退

    idea中git远程版本回退 2017年10月15日 15:25:36 gomeplus 阅读数:19313 工作中遇到git远程仓库需要回退到历史版本的问题,根据网上的搜索结果结合自己的实践,整理了 ...

  8. mongod 对指定数据库创建用户

    https://blog.51cto.com/wzlinux/2153062?source=dra 1.先在admin库中创建管理员用户与密码 [root@mbasic ~]# mongo Mongo ...

  9. gin框架教程三:JWT的使用

    JWT介绍 JWT (JSON Web Token) 是一种规范.这个规范允许我们使用JWT在用户和服务器之间安全传递信息. JWT的组成: jwt分3个部分,Header 头部.Payload 载荷 ...

  10. Smarty快速入门

    1.Smarty是用纯php语言写的类 2.功能是实现前后端分离 3.Smarty简洁高效 4.快速入门案例 1.下载 smarty源码 https://www.smarty.net/ 2.搭建PHP ...