Closed cwchen0201 closed 2 months ago
该现象出现的原因是因为 sort
在本例中既是一个 字段参数,又是一个默认的 排序参数,而它作为字段参数时,它在实体类中的类型是 int
, 而你传的却是一个不可转换为 int
的字符串值, 所以会报这个错。
参考:
如果 sort
字段不需要参与 WHERE
条件:
@DbField(conditional = false)
private int sort;
该方案让 sort
参数只作为排序参数,不再是字段参数。前端传参方式不变。
参考:https://bs.zhxu.cn/guide/advance/safe.html#%E6%9D%A1%E4%BB%B6%E7%BA%A6%E6%9D%9F
重新定义排序参数名,添加配置:
bean-searcher.params.sort = sortField
前端传参修改为:? sortField=sort & orderBy=asc
影响范围:所有需要排序的 Bean Searcher 接口
使用参数构建器的排序方法:
@GetMapping("/xxx")
public SearchResult<XxxVO> xxx(String sortField) {
var params = MapUtils.builder()..orderBy(XxxVO::getSort).build()
return beanSearcher.search(XxxVO.class, params);
}
前端传参修改为:? sortField=sort & orderBy=asc
影响范围:本接口
重命名检索实体类中的 sort
属性名(数据库层的表字段名可不变):
@DbField("sort")
private int sortInt;
前端传参修改为:? sort=sortInt & orderBy=asc
影响范围:本接口
错误描述
当sort字段用于排序 ?sort=sort&orderBy=asc,会返回空数据
实体类
错误信息
cn.zhxu.bs.implement.BaseSearcher - Empty data will be returned, because of illegal params detected: [Field type is INT, but the param value is: sort]