表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:
1 /** 2 * 初始化参数 3 * 4 * @param model 5 */ 6 private void begin(Model model) { 7 8 //商区名称 9 List<MallInfoResp> mallInfoRespList=this.mallInfoServiceClient.findAll().get(); 10 model.addAttribute("mallInfoList",mallInfoRespList); 11 model.addAttribute("mallInfoListMapJson",mallInfoListToMapJson(mallInfoRespList)); 12 //项目名称 13 ListData<HouseProjectResp> houseProjectRespListData=this.houseRegisterServiceClient.findProjectList(new HouseProjectQueryReq()).get(); 14 model.addAttribute("projectInfoList",houseProjectRespListData.getContent()); 15 model.addAttribute("projectInfoListMapJson",projectInfoListTopMapJson(houseProjectRespListData.getContent())); 16 //招商人员信息(获取部分人员的id和姓名) 17 List<InvestmentGroupPersonRealResp> investmentGroupPersonRealRespList = 18 investmentGroupServiceClient.findAllGroupPerson().get().getContent(); 19 20 List<ManagerInfoResp> managerInfoRespList = new ArrayList<>();//招商人员集合 21 22 Optional.ofNullable(new HashSet<String>(Optional.ofNullable(investmentGroupPersonRealRespList) 23 .orElse(Lists.newArrayList()).stream() 24 .filter(item -> !StringUtil.isEmpty(item.getManagerInfoId())) 25 .map(item -> item.getManagerInfoId()).collect(Collectors.toList())) 26 ).orElse(new HashSet<String>()).stream() 27 .forEach( 28 item -> { 29 ManagerInfoResp managerInfoResp = managerInfoServiceClient.selectManagerInfoById(item).get(); 30 if (managerInfoResp != null) { 31 managerInfoRespList.add(managerInfoResp); 32 } 33 } 34 ); 35 model.addAttribute("managerList", managerInfoRespList); 36 model.addAttribute("managerListMapJson", managerListToMapJson(managerInfoRespList)); 37 } 38 39 40 /** 41 * 商区名称转化成json字符串 42 * 43 * @param respList 入参 44 * 45 * @return success 46 */ 47 private String mallInfoListToMapJson(List<MallInfoResp> respList) { 48 Map<String,String> map= Maps.newHashMap(); 49 if(respList==null||respList.isEmpty()){ 50 return JsonUtils.toJson(map); 51 } 52 for(MallInfoResp resp:respList){ 53 map.put(resp.getId(),resp.getName()); 54 } 55 return JsonUtils.toJson(map); 56 } 57 58 /** 59 * 项目名称转化成Json字符串 60 * 61 * @param respListData 入参 62 * 63 * @return success 64 */ 65 private String projectInfoListTopMapJson(List<HouseProjectResp> respListData){ 66 Map<String,String> map=Maps.newHashMap(); 67 if(respListData==null){ 68 return JsonUtils.toJson(map); 69 } 70 for(HouseProjectResp resp:respListData){//获取内容 71 map.put(resp.getId(),resp.getProjectName()); 72 } 73 return JsonUtils.toJson(map); 74 } 75 76 /** 77 * 招商人员(业务)转换成Json字符串 78 */ 79 private String managerListToMapJson(List<ManagerInfoResp> resps){ 80 Map<String,String> map=Maps.newHashMap(); 81 if(resps==null){ 82 return JsonUtils.toJson(map); 83 } 84 for(ManagerInfoResp resp:resps){ 85 map.put(resp.getId(),resp.getRealname()); 86 } 87 return JsonUtils.toJson(map); 88 }
2、freemaker页面显示下拉,人员选择多选:
1 <#--新增修改弹框--> 2 <#assign v_add_form_fields=[ 3 {"text":"年份","name":"beginTime","type":"year","required":true,"title":"请输入年份"}, 4 {"text":"项目","name":"projectId","type":"searchSelect","data":projectInfoList,"key":"id","keyText":"projectName","required":true}, 5 {"text":"商区","name":"mallId","type":"searchSelect","data":mallInfoList,"key":"id","keyText":"name","required":true}, 6 {"text":"招商落位(面积)","name":"investAreaString","type":"float","required":true,"title":"请输入大于零的数目"}, 7 {"text":"回款额度","name":"recieveMoneyString","type":"float","required":true,"title":"请输入大于零的数目"}, 8 {"text":"客户接洽数","name":"negotiateNum","type":"numberText","required":true,"title":"请输入大于零的整数"}, 9 {"text":"招商人员","name":"personList","type":"searchSelect","data":managerList,"key":"id","keyText":"realname","required":true,"isMuilt":true,"isRow":true} 10 ]/> 11 <@right.sys_modal_add_form modelName="${v_model_name}" fields=v_add_form_fields submiturl="${v_controller_name}/save" />
3、Request接受数据model(对部分人员多选进行字段处理):
接受的数据按照逗号分隔
1 /** 2 *招商人员列表 3 */ 4 private List<String> personList; 5 6 public String getInvestPerson() { 7 return StringUtils.join(personList,"
8 }
4、返回页面部分人员字段处理:
1 /** 2 *招商人员列表 3 */ 4 private List<String> personList; 5 6 public List<String> getPersonList() { 7 String persons = getInvestPerson(); 8 if (persons != null) { 9 return Arrays.asList(investPerson.split(",")); 10 } 11 return personList; 12 }
5、数据库录入数据显示:
6、页面显示效果:
新增:
获取:
本人撰写,转载请注明出处。