选项设置
单选框组、多选框组、下拉选择框的选项有四种来源:静态数据源、数据字典、Api、表字典,在「控件设置 → 选项」中选择。
一、静态数据源
直接在控件上添加选项。每个选项都有「文本」和「值」两个输入框:文本用于展示,值是实际保存到数据库的内容。
JSON 批量配置
v2.5.5+支持此功能。
点击「JSON」可以一次性粘贴批量配置,内容必须是 JSON 数组:
[
{ "label": "男", "value": "1" },
{ "text": "女", "value": "2" }
]
| 写法 | 说明 |
|---|---|
{"label": "男", "value": "1"} | 标准写法,label 为文本,value 为值 |
二、数据字典
点击输入框打开「选择字典」弹窗,选择要使用的字典。
v2.5.5+弹窗分为【积木字典】和【系统字典】两个页签。
| 页签 | 数据来源 | 维护位置 |
|---|---|---|
| 积木字典 | 积木报表自己的字典 | 积木报表「数据字典」管理,参考 数据字典维护 |
| 系统字典 | 集成方的系统字典(如 JeecgBoot 系统字典) | 集成方自己的字典管理,在积木中只读 |

使用规则:
- 选了哪个页签的字典,填报时就只从那个来源取,两者互不回落:选了系统字典,系统里没有这个编码时选项为空,不会再去积木字典里找;反之亦然。
- 升级前已经配置好的报表(没有记录字典来源)按积木字典处理,行为不变。
- 【系统字典】页签只有集成方实现了下面的
getDictList方法、并且返回了数据时才会显示。 - 下拉框里的搜索、编辑记录时已选项的回显、滚动分页,对系统字典同样有效,由积木报表完成,集成方无需处理。
开启多租户模式(saasMode 为 created 或 tenant)时,积木字典会按创建人或租户隔离。填报报表在预览、分享预览时不按当前登录人隔离,保证其他用户打开报表时也能看到报表作者配置的积木字典;在设计器里仍按当前登录人隔离。
集成系统字典
在 JmReportTokenServiceI 的实现类中实现以下两个方法(不实现则【系统字典】页签不显示,不影响积木字典的使用):
| 方法 | 用途 |
|---|---|
getDictItems(String dictCode) | 按字典编码返回全部字典项,填报控件选了系统字典时调用。只需按编码返回全部字典项,搜索、回显、分页由积木报表完成 |
getDictList(String token, String dictName, String dictCode, Integer pageNo, Integer pageSize) | 「选择字典」弹窗【系统字典】页签的分页列表,dictName、dictCode 分别对应弹窗里的「字典名称」「字典编号」查询条件 |
代码示例(写死了「性别」「学历」两个字典,实际项目请改成查询自己的字典表):
@Slf4j
@Component
public class JimuReportTokenServiceImpl implements JmReportTokenServiceI {
/**
* 【示例】系统字典:编码 -> 字典名称
*/
private static final Map<String, String> DEMO_DICT_NAMES = new LinkedHashMap<String, String>() {{
put("sex", "性别");
put("xueli", "学历");
}};
/**
* 【示例】系统字典:编码 -> 字典项
*/
private static final Map<String, List<JmDictModel>> DEMO_DICT_ITEMS = new LinkedHashMap<String, List<JmDictModel>>() {{
put("sex", Arrays.asList(new JmDictModel("1", "男"), new JmDictModel("2", "女")));
put("xueli", Arrays.asList(new JmDictModel("1", "大专"), new JmDictModel("2", "本科"),
new JmDictModel("3", "硕士"), new JmDictModel("4", "博士")));
}};
/**
* 根据字典编码查询字典项
*/
@Override
public List<JmDictModel> getDictItems(String dictCode) {
return DEMO_DICT_ITEMS.get(dictCode);
}
/**
* 分页查询系统字典列表,供「选择字典」弹窗的【系统字典】页签使用
*/
@Override
public JmPage<JmSysDictModel> getDictList(String token, String dictName, String dictCode, Integer pageNo, Integer pageSize) {
List<JmSysDictModel> allList = new ArrayList<>();
for (Map.Entry<String, String> dict : DEMO_DICT_NAMES.entrySet()) {
allList.add(new JmSysDictModel(dict.getKey(), dict.getValue()));
}
if (StringUtils.isNotEmpty(dictName)) {
allList.removeIf(dict -> !dict.getDictName().contains(dictName));
}
if (StringUtils.isNotEmpty(dictCode)) {
allList.removeIf(dict -> !dict.getDictCode().contains(dictCode));
}
// 分页
int current = (pageNo == null || pageNo < 1) ? 1 : pageNo;
int size = (pageSize == null || pageSize < 1) ? 10 : pageSize;
int fromIndex = Math.min((current - 1) * size, allList.size());
int toIndex = Math.min(fromIndex + size, allList.size());
JmPage<JmSysDictModel> page = new JmPage<>();
page.setPageNo(current);
page.setPageSize(size);
page.setTotal(allList.size());
page.setRecords(allList.subList(fromIndex, toIndex));
return page;
}
}
报表数据集字段的「字典 code」对接 JeecgBoot 系统字典的方式见 JeecgBoot 系统字典对接,那里是积木字典优先、找不到再取系统字典;填报控件则按「选择字典」时选的页签明确区分来源。
三、Api
填写返回选项数据的接口地址。
- 只支持以
http://或https://开头的完整地址,例如http://192.168.1.10:8080/jeecg-boot/test/getOptions;相对路径不支持
例:http://api.jeecg.com/mock/26/option_api
请求时积木会自动拼接以下参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| searchText | String | 下拉框输入的搜索关键字 |
| searchValue | String | 指定的值(多个逗号分隔),编辑记录时用于回显已选项,有值时才传 |
| pageNo | Integer | 当前页码 |
| pageSize | Integer | 每页条数 |
| queryAll | Boolean | 是否查询全部,为 true 时需返回全部数据 |
返回格式:
[
{ "text": "群众", "value": 0 },
{ "text": "团员", "value": 1 },
{ "text": "党员", "value": 2 }
]
四、表字典
直接从数据库表里取选项,配置分为三步:
- 数据来源:选择数据源和数据库表。
- 字段映射:选择存储字段(值)和显示字段(文本)。
- 过滤条件(可选,
v2.5.5+):按 SQL 的WHERE条件来写,不用写where关键字,例如:
sex = '1' and status = 1

过滤条件会做 SQL 注入校验,包含 union、select、注释(--、/* */)、多语句(;)、盲注函数(sleep、ascii、substr 等)的条件会被拦截,只支持普通的字段比较、like、in 等写法。
五、接口参数说明
数据字典和 Api 两种来源调用的都是 /jmreport/form/getDictList,前端会自动传参,以下供自定义前端参考:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| dictCode | String | ✅ | 字典编码(Api 来源时为接口地址) |
| searchText | String | ❌ | 搜索关键字 |
| searchValue | String | ❌ | 指定字典值(多个逗号分隔),用于回显已选项 |
| pageNo | Integer | ❌ | 当前页码 |
| pageSize | Integer | ❌ | 每页条数 |
| queryAll | Boolean | ✅ | 是否查询全部 |