bootstrap 多级table_Bootstrap-Table+Select2+SpringBoot实现多选级联

本文介绍了如何使用Bootstrap-Table、Select2插件与SpringBoot配合,实现在前端选择科室后,自动加载对应科室的病房列表。通过在前端封装JS函数,将多选的科室ID以特殊格式传递给后台,后台再通过JPA的查询API处理这些ID,实现按科室筛选病房的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如下图,要选择选中科室下的所有病房,Bootstrap-Table 传参似乎支持URL如:?params=xxx 的方法进行

所以我只能通过前段封装一个类似于 x-x-x-x 每个x代表一个科室用“-”作为分割符号的方式传递给到后台

js 代码如下:

$("#department").change(function () {

var depts = null;

var deptsall="";

var o=document.getElementById('department').getElementsByTagName('option'); //select2多选取值

for(var i=0;i

if(o[i].selected){

deptsall+=o[i].value+"-";

}

}

deptsall = deptsall.substr(0, deptsall.length - 1); //减去最后一个"-"

$.ajax({

async: false,

success: function() {

depts = deptsall; //利用ajax给全局变量赋值

}

})

console.log(depts)

$("#ward").empty()

// var wardid = $(this).children('option:selected').val();

$("#ward").select2({

placeholder: "请先选择医院",

language: "zh-CN",

ajax: {

type: 'GET',

url: "/ward/list?wid=" + depts,

dataType: 'json',

delay: 250,

processResults: function (data) {

return {

results: data

//必须赋值给results并且必须返回一个obj

};

},

},

placeholder:'请选择',//默认文字提示

language: "zh-CN",

// tags: true,//允许手动添加

allowClear: true,//允许清空

escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入

minimumResultsForSearch: -1,//最少输入多少个字符后开始查询

formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果

formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择

});

});

后台接收参数

@RequestMapping("/ward")

public class WardController {

private static final Logger logger = LoggerFactory.getLogger(WardController.class);

@Autowired

WardRepository wardRepository;

@GetMapping("/list")

@ResponseBody

public String getWardList(@RequestParam(required=false) String wid

){

List result = wardRepository.findWardList(StringtoInteger.StoI(wid));

JSONArray list = JSONObject.parseArray(JSON.toJSONString(result));

String wards = JSON.toJSONString(list);

return wards;

}

}

JPA实现where in 需要使用List数字列表形式,所以写了一个转换方法 StringtoInteger.StoI,把前台接受到的String变为List

import java.util.ArrayList;

import java.util.List;

public class StringtoInteger {

public static List StoI(String str){

String[] Str2Array = str.split("-");

List idgroup = new ArrayList();

for (String item: Str2Array ){

Integer InteItem = Integer.parseInt(item);

idgroup.add(InteItem);

}

System.out.println(idgroup);

return idgroup;

}

}

JPA查询API封装

@Repository

public interface WardRepository extends JpaRepository,JpaSpecificationExecutor {

@Query(nativeQuery = true,value="select w.id,w.wardname,w.department_id from ward w left join department d on w.department_id = d.id where w.department_id in :id")

List findWardList(@Param("id") List id);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值