JeecgBoot icon indicating copy to clipboard operation
JeecgBoot copied to clipboard

js增强如何限制全表导出或过大数量的导出

Open filicat opened this issue 1 month ago • 8 comments

版本号:

<modelVersion>4.0.0</modelVersion> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-parent</artifactId> 3.0 pom

分支:
问题描述:

我现在遇到一个主子表导出时系统崩溃的问题, 想限制用户做全表导出或过大数量的导出

首先想用Java增强, 尝试了CgformEnhanceJavaListInter接口, 在抛出异常时, 发现前端提示没有, 只是将导出的excel文件实际内容改成了json文本, 这个还会导致用户直接双击打开时excel/wps会报错文件损坏, 得用记事本之类的才能查看

后来只能转用js增强, 但是文档里面

Image

似乎没有导出前的事件

错误截图:

友情提示:

  • 未按格式要求发帖、描述过于简单的,会被直接删掉;
  • 描述问题请图文并茂,方便我们理解并快速定位问题;
  • 如果使用的不是master,请说明你使用的分支;

filicat avatar Nov 12 '25 08:11 filicat

你直接抛出异常呢

zhangdaiscott avatar Nov 14 '25 09:11 zhangdaiscott

https://github.com/jeecgboot/JeecgBoot/issues/9091

zhangdaiscott avatar Nov 14 '25 09:11 zhangdaiscott

cr

zhangdaiscott avatar Nov 14 '25 10:11 zhangdaiscott

问题描述中"导出的excel文件实际内容改成了json"就是抛出异常后的现象, 这就是我放弃使用java增强的原因

filicat avatar Nov 15 '25 03:11 filicat

你的java增强是怎么写的呢?我这没有复现您的问题,更新到最新版试下: 正常提示错误 Image 增强代码: Image 增强配置 Image

jeecgos avatar Dec 01 '25 11:12 jeecgos

package org.jeecg.modules.demo.hk.cgformtest;

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.online.cgform.enhance.CgformEnhanceJavaInter;
import org.jeecg.modules.online.cgform.enhance.CgformEnhanceJavaListInter;
import org.jeecg.modules.online.config.exception.BusinessException;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Slf4j
public class CgformEnhanceExportTest implements CgformEnhanceJavaInter, CgformEnhanceJavaListInter {
    @Override
    public int execute(String s, Map<String, Object> map) throws BusinessException {
        log.info("Map: CgformEnhanceExportTest execute");
        return 0;
    }

    @Override
    public int execute(String s, JSONObject jsonObject) throws BusinessException {
        log.info("JSON: CgformEnhanceExportTest execute");
        return 0;
    }

    @Override
    public void execute(String s, List<Map<String, Object>> list) throws BusinessException {
        log.info("List: CgformEnhanceExportTest execute");
        if (list != null && list.size() > 10) {
            throw new JeecgBootException("列表长度不能超过10");
        }
    }
}

Image

导出文件时前端不是出现错误提示, 还是提示有文件下载 且用文本查看软件查看导出的文件如下 Image

jeecg 版本是3.0, 如果只能通过升级jeecg版本修复就算了...

filicat avatar Dec 05 '25 00:12 filicat

你版本太老了,这个后来的版本进行了处理。

你可以看下目前版本在这个文件 src/hooks/system/useMethods.ts
Image

jeecgDeveloper avatar Dec 05 '25 09:12 jeecgDeveloper

你版本太老了,这个后来的版本进行了处理。

你可以看下目前版本在这个文件 src/hooks/system/useMethods.ts Image

感谢回复, 请问是只改前端就可以了吗? 后端不用修改吗

filicat avatar Dec 05 '25 09:12 filicat