表id关联数据获取至页面,制作下拉框多选进行数据多项获取(字段处理)
这周完成了一张表单,重点碰到以下问题:
1、freemaker获取年份的type值取year,类型直接为Long,传至后台和获取数据不需要转换;
2、freemaker获取日期type值为date,类型需要转换成时间戳,页面类型String,数据库类型Long,需要在接收数据类中进行类型转换和日期处理;
3、下拉多选的freemaker的关键字是 "isMuilt":true 接收list,显示下拉框可以进行多项选择(下面代码给出解答)
4、类似金额、面积可以输入小数的在页面定义float,数据库表是integer的,需要在中间进行数据处理,可以写一个封装类,将数据乘以100进行处理;
---------------------------------------
目录:
1、控制类处理
2、freemaker页面处理
3、Request接受数据model处理
4、返回页面部分人员字段处理
5、数据库录入数据显示
6、页面显示效果
------------------------------------------
1、控制类中:manager表中保存所有人员数据,另一张groupperson表中只保存部分人员的id。获取部分人员的姓名和id:
/**
* 初始化参数
*
* @param model
*/
private void begin(Model model) { //商区名称
List<MallInfoResp> mallInfoRespList=this.mallInfoServiceClient.findAll().get();
model.addAttribute("mallInfoList",mallInfoRespList);
model.addAttribute("mallInfoListMapJson",mallInfoListToMapJson(mallInfoRespList));
//项目名称
ListData<HouseProjectResp> houseProjectRespListData=this.houseRegisterServiceClient.findProjectList(new HouseProjectQueryReq()).get();
model.addAttribute("projectInfoList",houseProjectRespListData.getContent());
model.addAttribute("projectInfoListMapJson",projectInfoListTopMapJson(houseProjectRespListData.getContent()));
//招商人员信息(获取部分人员的id和姓名)
List<InvestmentGroupPersonRealResp> investmentGroupPersonRealRespList =
investmentGroupServiceClient.findAllGroupPerson().get().getContent(); List<ManagerInfoResp> managerInfoRespList = new ArrayList<>();//招商人员集合 Optional.ofNullable(new HashSet<String>(Optional.ofNullable(investmentGroupPersonRealRespList)
.orElse(Lists.newArrayList()).stream()
.filter(item -> !StringUtil.isEmpty(item.getManagerInfoId()))
.map(item -> item.getManagerInfoId()).collect(Collectors.toList()))
).orElse(new HashSet<String>()).stream()
.forEach(
item -> {
ManagerInfoResp managerInfoResp = managerInfoServiceClient.selectManagerInfoById(item).get();
if (managerInfoResp != null) {
managerInfoRespList.add(managerInfoResp);
}
}
);
model.addAttribute("managerList", managerInfoRespList);
model.addAttribute("managerListMapJson", managerListToMapJson(managerInfoRespList));
} /**
* 商区名称转化成json字符串
*
* @param respList 入参
*
* @return success
*/
private String mallInfoListToMapJson(List<MallInfoResp> respList) {
Map<String,String> map= Maps.newHashMap();
if(respList==null||respList.isEmpty()){
return JsonUtils.toJson(map);
}
for(MallInfoResp resp:respList){
map.put(resp.getId(),resp.getName());
}
return JsonUtils.toJson(map);
} /**
* 项目名称转化成Json字符串
*
* @param respListData 入参
*
* @return success
*/
private String projectInfoListTopMapJson(List<HouseProjectResp> respListData){
Map<String,String> map=Maps.newHashMap();
if(respListData==null){
return JsonUtils.toJson(map);
}
for(HouseProjectResp resp:respListData){//获取内容
map.put(resp.getId(),resp.getProjectName());
}
return JsonUtils.toJson(map);
} /**
* 招商人员(业务)转换成Json字符串
*/
private String managerListToMapJson(List<ManagerInfoResp> resps){
Map<String,String> map=Maps.newHashMap();
if(resps==null){
return JsonUtils.toJson(map);
}
for(ManagerInfoResp resp:resps){
map.put(resp.getId(),resp.getRealname());
}
return JsonUtils.toJson(map);
}
2、freemaker页面显示下拉,人员选择多选:
<#--新增修改弹框-->
<#assign v_add_form_fields=[
{"text":"年份","name":"beginTime","type":"year","required":true,"title":"请输入年份"},
{"text":"项目","name":"projectId","type":"searchSelect","data":projectInfoList,"key":"id","keyText":"projectName","required":true},
{"text":"商区","name":"mallId","type":"searchSelect","data":mallInfoList,"key":"id","keyText":"name","required":true},
{"text":"招商落位(面积)","name":"investAreaString","type":"float","required":true,"title":"请输入大于零的数目"},
{"text":"回款额度","name":"recieveMoneyString","type":"float","required":true,"title":"请输入大于零的数目"},
{"text":"客户接洽数","name":"negotiateNum","type":"numberText","required":true,"title":"请输入大于零的整数"},
{"text":"招商人员","name":"personList","type":"searchSelect","data":managerList,"key":"id","keyText":"realname","required":true,"isMuilt":true,"isRow":true}
]/>
<@right.sys_modal_add_form modelName="${v_model_name}" fields=v_add_form_fields submiturl="${v_controller_name}/save" />
3、Request接受数据model(对部分人员多选进行字段处理):
接受的数据按照逗号分隔
/**
*招商人员列表
*/
private List<String> personList; public String getInvestPerson() {
return StringUtils.join(personList,"
8 }
4、返回页面部分人员字段处理:
/**
*招商人员列表
*/
private List<String> personList; public List<String> getPersonList() {
String persons = getInvestPerson();
if (persons != null) {
return Arrays.asList(investPerson.split(","));
}
return personList;
}
5、数据库录入数据显示:

6、页面显示效果:
新增:

获取:

表id关联数据获取至页面,制作下拉框多选进行数据多项获取(字段处理)的更多相关文章
- vue实现下拉框全选和输入匹配
实际项目中的一个需求: 点击文本框,弹出带有复选框的选项,然后获取选中项的数据,传给后面的一个功能.在文本框输入内容,也会动态的匹配下拉列表,并且列表带有全选功能. 朴素的效果图: 我选择了用vue实 ...
- jquery实现下拉框多选
一.说明 本文是利用EasyUI实现下拉框多选功能,在ComboxTree其原有的基础上对样式进行了改进,样式表已上传demo,代码如下 二.代码 <!DOCTYPE html PUBLIC & ...
- 商品类型的下拉框绑定一个事件,通过ajax获取属性
html代码这么写 <!-- 商品属性 --> <table cellspacing="1" cellpadding="3" width=&q ...
- combobox中动态加入几个checkbox,实现下拉框多选
combobox中动态加入几个checkbox,实现下拉框多选,将一个checkbox选中时其内容就会在combobox中显示出来,将另一个checkbox选中时其内容会跟在第一个checkbox的内 ...
- Excel怎么下拉框多选
打开Exlce, 确定,然后 右击查看代码,把这段代码复制到新建的文件里面 此时Excel会给出提示,选择否,,系统会提示保存,在保存的时候选择启用宏的工作簿然后保存,此时Excel下拉框多选就搞定了 ...
- Bootstrap selectpicker 下拉框多选获取选中value和多选获取文本值
1.页面代码: 页面引入: bootstrap-select.min.css和 bootstrap-select.min.js. defaults-zh_CN.min.js文件,并初始化下拉选项框. ...
- easyui combotree下拉框多选赋值
发现jquery.easyui.min.js 1.3.4版本的用setValues给多选下拉框赋值不成功,只能用1.3.1版本的 Html代码: <input id="ProductL ...
- checkboxlist 下拉框多选功能 ,模拟dropdownlist带复选框效果
前台代码 01.<html xmlns="http://www.w3.org/1999/xhtml"> 02.<head runat="server&q ...
- ops-web运维平台-create.jsp-mootools下拉框-复选框
create.jsp页面的,body部分 <body onload="Page.init('${pageError}','${pageMessage}',${isSubmit},tru ...
随机推荐
- TensorFlow object detection API应用
前一篇讲述了TensorFlow object detection API的安装与配置,现在我们尝试用这个API搭建自己的目标检测模型. 一.准备数据集 本篇旨在人脸识别,在百度图片上下载了120张张 ...
- JBOSS Spring Web
jndi: <datasources> <xa-datasource> <jndi-name>jdbc/sss-local</jndi-name> &l ...
- Spring 环境与profile(一)——超简用例
什么是profile,为什么需要profile? 在开发时,不同环境(开发.联调.预发.正式等)所需的配置不同导致,如果每改变一个环境就更改配置不但麻烦(修改代码.重新构建)而且容易出错.Spring ...
- 【learning】多项式开根详解+模板
概述 多项式开跟是一个非常重要的知识点,许多多项式题目都要用到这一算法. 用快速数论变换,多项式求逆元和倍增法可以在$O(n log n)$的时间复杂度下求出一个$n$次多项式的开根. 前置技能 快速 ...
- C# Azure 用Webhook添加警报规则
本篇文章的目的是什么? Azure云端一直困扰着我的是,如果遇到数据库累积数据量过大.数据库DTU过大.应用程序服务访问量过大等,我们都没办法知道他们什么时候过大.只能做的是,我们天天看着我们的应用, ...
- MVC应用程序请求密码的功能(一)
经过一系列的练习,实现了会员注册<MVC会员注册>http://www.cnblogs.com/insus/p/3439599.html,登录<MVC应用程序实现会员登录功能> ...
- C++标准模板库STL
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的代码 ...
- Java面试题精选
jdk ┌──────────────┬───────────────────────────────────────────────────────┐ │ │ │ ├──────────────┼─ ...
- Oracle数据库基本常用命令汇总
1.得到数据库名和创建日期SELECT name, created, log_mode, open_mode FROM v$database; 2.ORACLE数据库的计算机的主机名,ORACLE数据 ...
- 局域网内客户端无法使用机器名连接SQLServer服务器
在生产环境中有时会要求使用机器名连接SQLServer服务器,但有时捣好久都没法连上~ 针对这个问题做个简短记录,防止以后自己再遇到记不起原因,也方便一下其他同行! 废话不多说,作为工作多年的老家伙了 ...