《JeecgBoot系列》JeecgBoot开发问题记录

文章详细记录了解决JeecgBoot开发中遇到的两个主要问题:下拉搜索多选失败的Sign签名校验问题,以及Online表单生成代码失败的处理方法。还讨论了接口参数错误的排查与修正。

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

JeecgBoot开发问题记录

一、JeecgBoot下拉搜索多选失败:报Sign签名校验失败

1.报错信息:

传递中文时,解码前后不一致导致验证失败

[http-nio-8080-exec-9] ERROR o.j.config.sign.interceptor.SignAuthInterceptor:62 - request URI = /jeecg-boot/sys/dict/getDictItems/report_factory,factory,factory,%20report%20%3D%20'%E4%BA%A7%E9%94%80%E5%AD%98'
[http-nio-8080-exec-9] ERROR o.j.config.sign.interceptor.SignAuthInterceptor:63 - Sign 签名校验失败!Header Sign : D84990622B0106819CB55D43238A10D6

2.修改内容:

  • 1.修改Java文件目录:

    jeecg-boot\jeecg-boot-base\jeecg-boot-base-core\src\main\java\org\jeecg\config\sign\util\SignUtil.java

  • 2.修改getParamsSign类:

  • 修改前:

/**
     * @param params
     *            所有的请求参数都会在这里进行排序加密
     * @return 得到签名
     */
    public static String getParamsSign(SortedMap<String, String> params) {
   
   
        //去掉 Url 里的时间戳
        params.remove("_t");
        String paramsJsonStr = JSONObject.toJSONString(params);
        log.info("Param paramsJsonStr : {}", paramsJsonStr);
        StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class);
        String signatureSecret = staticConfig.getSignatureSecret();
        if(oConvertUtils.isEmpty(signatureSecret) || signatureSecret.contains("${")){
   
   
            throw new JeecgBootException("签名密钥 ${jeecg.signatureSecret} 缺少配置 !!");
        }
        //修改前
        return DigestUtils.md5DigestAsHex
### JeecgBoot 低代码平台审批流程实现与配置 #### 配置环境准备 为了在JeecgBoot平台上顺利实施审批流程,需先确认已安装并运行了JeecgBoot框架。该框架采用Spring Boot2.x、Spring Cloud、Ant Design&Vue3等技术栈构建[^1]。 #### 创建审批流程模型 借助Flowable引擎,在线创建或导入BPMN文件来设计审批流。此过程允许开发者直观地绘制业务逻辑图,并指定各环节的操作者角色以及流转条件[^4]。 #### 动态设定审批人 对于特定场景下需要灵活调整审核权限的情况,可以在`setNextAssignee`方法内编写自定义逻辑,依据实际需求动态指派下一个处理任务的用户或组群。这通常涉及到对当前实例状态评估后作出决策[^3]。 #### 表单集成与提交 利用内置的Online Coding工具快速搭建所需的数据收集界面——即电子化表格;这些表单不仅限于单一页面展示,还能够嵌入复杂结构如子表关联等形式满足多样化的应用场景。当完成填写后即可触发相应的后台事务处理机制进而推动整个工作项向前进展[^5]。 #### 发布与测试优化 初次部署时建议先行内部试用新上线的服务特性,邀请部分成员参与体验反馈以便及时发现潜在缺陷加以修正完善后再全面推广至生产环境中去[^2]。 ```java // 示例:设置下一节点负责人伪代码片段 public void setNextAssignee(String processInstanceId, String nextUserId){ RuntimeService runtimeService = processEngine.getRuntimeService(); TaskService taskService = processEngine.getTaskService(); List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).list(); for (Task task : tasks) { if ("待定".equals(task.getName())) { // 假设这是要更改分配者的任务名称 taskService.setAssignee(task.getId(), nextUserId); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DATA数据猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值