这周完成了一张表单,重点碰到以下问题:

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关联数据获取至页面,制作下拉框多选进行数据多项获取(字段处理)的更多相关文章

  1. vue实现下拉框全选和输入匹配

    实际项目中的一个需求: 点击文本框,弹出带有复选框的选项,然后获取选中项的数据,传给后面的一个功能.在文本框输入内容,也会动态的匹配下拉列表,并且列表带有全选功能. 朴素的效果图: 我选择了用vue实 ...

  2. jquery实现下拉框多选

    一.说明 本文是利用EasyUI实现下拉框多选功能,在ComboxTree其原有的基础上对样式进行了改进,样式表已上传demo,代码如下 二.代码 <!DOCTYPE html PUBLIC & ...

  3. 商品类型的下拉框绑定一个事件,通过ajax获取属性

    html代码这么写 <!-- 商品属性 --> <table cellspacing="1" cellpadding="3" width=&q ...

  4. combobox中动态加入几个checkbox,实现下拉框多选

    combobox中动态加入几个checkbox,实现下拉框多选,将一个checkbox选中时其内容就会在combobox中显示出来,将另一个checkbox选中时其内容会跟在第一个checkbox的内 ...

  5. Excel怎么下拉框多选

    打开Exlce, 确定,然后 右击查看代码,把这段代码复制到新建的文件里面 此时Excel会给出提示,选择否,,系统会提示保存,在保存的时候选择启用宏的工作簿然后保存,此时Excel下拉框多选就搞定了 ...

  6. Bootstrap selectpicker 下拉框多选获取选中value和多选获取文本值

    1.页面代码: 页面引入: bootstrap-select.min.css和 bootstrap-select.min.js. defaults-zh_CN.min.js文件,并初始化下拉选项框. ...

  7. easyui combotree下拉框多选赋值

    发现jquery.easyui.min.js 1.3.4版本的用setValues给多选下拉框赋值不成功,只能用1.3.1版本的 Html代码: <input id="ProductL ...

  8. checkboxlist 下拉框多选功能 ,模拟dropdownlist带复选框效果

    前台代码 01.<html xmlns="http://www.w3.org/1999/xhtml"> 02.<head runat="server&q ...

  9. ops-web运维平台-create.jsp-mootools下拉框-复选框

    create.jsp页面的,body部分 <body onload="Page.init('${pageError}','${pageMessage}',${isSubmit},tru ...

随机推荐

  1. c++三维静态数组的定义与作为函数的传递

    在c++中,我们可以定义三维数组,并且可以将之作为参数直接传递. 定义: #include <iostream> #include <windows.h> using name ...

  2. Ruby:Nokogiri

    阅读推荐: Nokogiri的用法我推荐三篇非常给力的文章: http://ruby.bastardsbook.com/chapters/html-parsing/ http://ruby.basta ...

  3. 关于 OpenIdConnect 认证启用 HTTPS 回调 RedirectUri 不生效问题

    在搭建 IdentityServer 服务端后,我们尝试使用了 OIDC(OpenID Connect) 的中间件来代替了原先的 Session 系统认证方式,起初采用的是 HTTP 协议,一切都没有 ...

  4. Mysql大数据表优化处理

    原文链接: https://segmentfault.com/a/1190000006158186 当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表 ...

  5. IE中透明度的读写

    一.获取透明度 ele.filters.alpha 返回元素所有滤镜的对象,可在此基础上获取opacity即可. 但是似乎ele.filters只能存储第一个滤镜,而当我们把alpha放在第二位时,就 ...

  6. php获取全选checkbox多个值

    <form name="myform"  action="index2.php" method="post">          ...

  7. 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)

    不多说,直接上干货!  Anaconda2 里 PS C:\Anaconda2\Scripts> PS C:\Anaconda2\Scripts> pip.exe install itch ...

  8. Word在转PDF的过程中如何创建标签快速方便阅读(图文详解)

    不多说,直接上干货! 选择如下 成功! 欢迎大家,加入我的微信公众号:大数据躺过的坑        人工智能躺过的坑       同时,大家可以关注我的个人博客:    http://www.cnbl ...

  9. logstash-2-插件配置

    配置语法:  Logstash必须有一个 input 和一个 output 1, 处理输入的input 1), 从文件录入 logstash使用一个名为 filewatch的 ruby gem库来监听 ...

  10. 插入排序:直接插入排序&希尔排序

    一.直接插入排序 1. 思想 直接排序法, 可以分为两个部分, 一部分是有序的, 一部分是无序的. 从这个图上, 应该是能看清楚直接插入排序的思想了. 将无序部分的第一个与有序部分进行比较. 从有序部 ...