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

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. webgl介绍

    一.webgl与three.js 我们知道canvas.svg等是2D绘图的,那么如果想要使用js进行3D绘图,可以吗? 答案是肯定的!实际上主流的3D开发使用的是c++,但是随着技术的发展,Java ...

  2. mac 查询端口被哪个进程占用

    1,查看端口被哪个程序占用sudo lsof -i tcp:port如: sudo lsof -i tcp:80802,看到进程的PID,可以将进程杀死.sudo kill -9 PID如:sudo ...

  3. spring 后处理器

    Bean后处理器 新建maven项目并添加spring依赖,目录结构如下 Axe public interface Axe { public String chop(); } Person publi ...

  4. redis源码学习-dict

    1.字典相关的几个结构体 dict由hash table存储key-value, hash table数组每一个元素存放dictEntry链接的链表头结点,dictEntry节点存放key-value ...

  5. java 分库关联查询工具类

    问题: 由于公司业务扩大,各个子系统陆续迁移和部署在不同的数据源上,这样方便扩容,但是因此引出了一些问题. 举个例子:在查询"订单"(位于订单子系统)列表时,同时需要查询出所关联的 ...

  6. python的Web框架:初识Django

    web应用程序 本质 socket服务端 浏览器本质是一个socket客户端 1. 服务器程序 socket请求 接受HTTP请求,发送HTTP响应. 比较底层,繁琐,有专用的服务器软件,如:Apac ...

  7. AngularJS学习笔记(四)内置指令

    说说指令 不得不赞叹,指令是ng最为强大的功能之一,好吧,也可以去掉之一,是最强大的功能.ng内置了许多自定义的指令,这避免了我们自己去造轮子.同时,ng也提供了自定义指令的功能,可以让我们的页面元素 ...

  8. Jquery插件的使用及制作插件

    常用插件 插件:jquery不可能包含所有的功能,我们可以通过插件扩展jquery的功能. jQuery有着丰富的插件,使用这些插件能给jQuery提供一些额外的功能. jquery.color.js ...

  9. 在.net中序列化读写xml方法的总结--转载过来学习学习

    原文章地址:http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html 首先做个大概的总结,XML包括的元素有XmlElement,X ...

  10. 一.JDK版本切换批处理脚本

    我们平时在window上做开发的时候,可能需要同时开发两个甚至多个项目,有时不同的项目对JDK的版本要求有区别,这时候我们可能会在一台电脑上安装多个版本的JDK,如下图所示: