Springboot+layui 回填(回显)下拉(select)选择框

在Java学习阶段,相信许多小伙伴用Layui搭建过前端页面,对于后端开发学习,使用一个好用的前端框架尤为重要,记录一下我在开发过程中遇见的问题。

问题描述:

    我在使用layui做模态框时,需要查询数据库的单个字段进行数据回填到下拉选择框。直接上图演示一下。

此时的数据为数据库中的数据,当然,这些数据是和要添加的表,不是同一个。此时就需要考虑,怎么查询一张表的一个字段,进行回填了。

解决:

因为一张表如果只用一个字段,要把所有的字段都查出来的话,未免效率有些低,所以就要只查询一个字段,这里我使用的MybatisPlus省略的sql语句,如果你使用的是mybatis,则需要手动编写sql,简单的sql我就不再描述,大家可以自行百度。

省略了实体类,此处只需要把queryWrapper.select("depart_name");换成你自己的数据库字段名即可,也可以拼接。

stream流为jdk1.8的新特性(现在来说,好像也不新了)。没了解过的小伙伴可以去百度了解一下。

// service 层
public Map selectDepartment() {
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.select("depart_name");
        List<Department> list = departmentDao.selectList(queryWrapper);
        List<String> collect = list.stream().map(Department::getDepartName).collect(Collectors.toList());
        Map map = new HashMap();
        map.put("departs",collect);
        return map;

    }

此时返回了一个map集合。

在controller层调用一下即可,此时的map集合中存放了要查询的字段的所有数据。并且以JSON格式进行了返回

    @ResponseBody
    @RequestMapping(value = "/selectAllDepartmentName")
    public Map selectAllDepartmentName(){
        return departmentService.selectDepartment();
        
    }

前端处理(摘取重要部分)

<div class="layui-form-item">
            <label class="layui-form-label">所属部门:</label>
            <div class="layui-input-block">
                <select id="departName" name="departName" lay-verify="required" lay-filter="department">
                </select>
            </div>
        </div>

ajax回填

$.ajax({
            url:"/departmentController/selectAllDepartmentName",
            success:function (result) {
                // 此处每次打开 做一次清空操作,防止记忆上次的选择
                $("#departName").empty();
                // 此处添加默认的选择(如果没有这个option,则ios系统可能无法打开下拉框,所以为了(照顾)他们,此处还是有必要的)
                $("#departName").append("<option value='' selected disabled>" +"----请选择----"+"</option>")
                for (var i = 0; i < result.departs.length; i++) {
                    $("#departName").append("<option value=" + result.departs[i] + ">" +result.departs[i]+"</option>")
                }
                // 注意 没有这个渲染,可能会回填失败
                layui.form.render('select');
            }
        })
    }

总结:

Layui虽然提供了官方文档,但是有很多地方,去翻文档还是很难去翻到的,有时候还需要借助博客。

以上如有错误,欢迎指出!!!

猜你喜欢

转载自blog.csdn.net/weixin_44231805/article/details/109061053