表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 ...
随机推荐
- (转)9 db2trc案例2(1,2)
原文:http://book.51cto.com/art/200906/130068.htm 9.3.3 db2trc案例2(1) 在AIX操作系统上,系统原先运行良好,而后用户从DB2 V8 FP ...
- Spring4 mvc+maven 框架搭建(3)
经过前面两个环节,spring mvc的原料已经准备好了,现在就可以正式开始搭建springmvc框架了. 首先先介绍介绍搭建的框架具有的功能: 1)集成log4j,配置好日志相关并可以打印出相关的日 ...
- CLR关于语言文化的类型一CultureInfo类和字符串与线程的关联
.Net Frameword使用System.Globalization.Culture类型表示一个"语言/国家"对(根据RFC 1766标准).例如,'en-US'代表美国英语, ...
- c++之菱形继承问题
昨天面试问了菱形继承的问题,回答的稀巴烂,回来赶快好好学习一波!!!!! 菱形继承如下图: 上一段代码: #include<bits/stdc++.h> using namespace s ...
- Executor框架(一)
类继承关系 更详细的继承关系: ExecutorComplitionService类 在说Executor接口及实现类之前,先聊聊ExecutorComplitionService. 成员变量 pri ...
- 为什么研发团队不适合量化KPI的绩效考核?
研发团队(如果不是外包,不是机械性的活动)如果进行的是creative的有创造性的智力活动,那么应该不适合用量化KPI的绩效考核和激励,不应该用工时.bug数(难度大的bug可能多,测试人员可能没有经 ...
- tensorflow 导入新的tensorflow实例
因为涉及到同一台电脑多个GPU,在指定tensorflow图的时候,需要为不同的图指定不同的GPU,所以必须在导入tensorflow之前,指定可用的GPU def import_tf(device_ ...
- ThreadPoolExecutor参数讲解
1. 线程池可以节省创建多个线程带来的开销问题. 2. 线程池的参数如下: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSiz ...
- 200个最常见的JAVA面试问题(附答案)
本文内容: 20个最常见的JAVA面试问题(附答案) 13个单例模式JAVA面试问题(附答案) 说说JVM和垃圾收集是如何工作的(附答案) 说说如何避免JAVA线程死锁(附答案) Java中HashS ...
- spring AOP 之三:使用@AspectJ定义切入点
@AspectJ相关文章 <spring AOP 之二:@AspectJ注解的3种配置> <spring AOP 之三:使用@AspectJ定义切入点> <spring ...