表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 ...
随机推荐
- 再学C/C++ 之 浅析gdb的-g选项
浅析gdb的-g选项 准备 gdb是Linux下学习C/C++最常用的debug工具.要使用这一强大工具,必须在编译时加上-g选项,生成的目标文件才可以用gdb进行调试. 如,先创建一个test. ...
- 深入理解Spring的异步机制
一.Spring中实现异步执行 在这里我先以事件的机制举例,注意默认情况下事件的发布与监听都是同步执行的.那么我们来看一看基于异步事件的例子该怎么写 首先还是定义事件: package com.bdq ...
- wordpress添加文章阅读数量
将下面代码添加到functions.php //取得文章的阅读次数 function post_views($before = '点击 ', $after = ' 次', $echo = 1) { g ...
- Spring代理
概述 代理(Proxy)是一种设计模式, 提供了对目标对象另外的访问方式:即通过代理访问目标对象. 这样好处: 可以在目标对象实现的基础上,增强额外的功能操作.(扩展目标对象的功能). 举例:假设某用 ...
- java中this$0 this$1 this$2
import java.lang.reflect.Field; public class Outer {//this$0 public class FirstInner {//this$1 publi ...
- HashMap底层原理分析(put、get方法)
1.HashMap底层原理分析(put.get方法) HashMap底层是通过数组加链表的结构来实现的.HashMap通过计算key的hashCode来计算hash值,只要hashCode一样,那ha ...
- 拓展KMP算法详解
拓展KMP解决的问题是给两个串S和T,长度分别是n和m,求S的每一个后缀子串与T的最长公共前缀分别是多少,记作extend数组,也就是说extend[i]表示S[i,n-1](i从0开始)和T的最长公 ...
- @JsonProperty和@JsonAlias的区别
@JsonProperty这个注解提供了序列化和反序列化过程中该java属性所对应的名称@JsonAlias这个注解只只在反序列化时起作用,指定该java属性可以接受的更多名称 public stat ...
- ConcurrentHashMap 源码阅读小结
前言 每一次总结都意味着重新开始,同时也是为了更好的开始.ConcurrentHashMap 一直是我心中的痛.虽然不敢说完全读懂了,但也看了几个重要的方法,有不少我觉得比较重要的知识点. 然后呢,放 ...
- C# Quartz的配置
1. 介绍 Quartz为后台工作者提供了得便利,我们下面介绍一下它的配置.本文配置主要针对服务程序的配置. 但是在做下面配置之前,要安装包 Install-Package Quartz 2. Qua ...