如下图,要选择选中科室下的所有病房,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);
}