Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

预览白屏 #2975

Closed
hh-cat opened this issue Sep 16, 2024 · 16 comments
Closed

预览白屏 #2975

hh-cat opened this issue Sep 16, 2024 · 16 comments

Comments

@hh-cat
Copy link

hh-cat commented Sep 16, 2024

版本号:1.8.1

maven依赖:

<dependency>
    <groupId>org.jeecgframework.jimureport</groupId>
    <artifactId>jimureport-spring-boot-starter</artifactId>
    <version>1.8.1</version>
</dependency>
问题描述:

报表制作完成之后,点击预览显示白屏。看issue#2919提到说要登录后才能正常访问。我这边已经是实现了JmReportTokenServiceI接口实现了token的鉴权,带上token之后/jmreport/list可以正常显示,其他功能也正常,就是预览白屏。
我也在配置文件中配置了预览不需要登录,但是无效,配置如下:

spring:
  security:
    # view 页面允许不登录访问(默认false)
    open-view-page: true
错误日志&截图:

点击预览之后白屏:
Clip_2024-09-16_15-16-48
控制台报错:
Clip_2024-09-16_15-15-12
Clip_2024-09-16_15-16-23
数据已经正确返回到前端:
Clip_2024-09-16_15-15-58

友情提示(为了提高issue处理效率):

  • 积木报表是一款免费报表产品,功能免费源码不开放;
  • 未按格式要求发帖,会被直接删掉;
  • 请针对问题提供[报表设计配置或SQL脚本]或在官网制作报表示例并提供ID;
  • 针对不好重现的问题,请录制操作视频或详细的重现步骤;
@hh-cat
Copy link
Author

hh-cat commented Sep 16, 2024

导出pdf正常,可以看到数据。

@hh-cat
Copy link
Author

hh-cat commented Sep 16, 2024

分享链接也是白屏。

@zhangdaiscott
Copy link
Member

新设计个报表看看

@hh-cat
Copy link
Author

hh-cat commented Sep 16, 2024

新设计个报表看看

我新建了一个报表,没有添加数据集,仅在页面上随意写了几个单元格,也是无法预览。

@zhangdaiscott
Copy link
Member

没见别人反馈类似问题,你是使用的那个版本

@hh-cat
Copy link
Author

hh-cat commented Sep 16, 2024

没见别人反馈类似问题,你是使用的那个版本

从maven依赖的版本来看是1.8.1

@zhangdaiscott
Copy link
Member

清空下浏览器缓存试试

@zhangdaiscott
Copy link
Member

zhangdaiscott commented Sep 17, 2024

使用的是绿色免安装版本还是,把依赖加入到自己的项目

截图中的那个

image
image

@hh-cat
Copy link
Author

hh-cat commented Sep 17, 2024

使用的是绿色免安装版本还是,把依赖加入到自己的项目

截图中的那个

image image

我是集成到我自己的项目里面:

  1. 添加maven依赖:
<dependency>
    <groupId>org.jeecgframework.jimureport</groupId>
    <artifactId>jimureport-spring-boot-starter</artifactId>
    <version>1.8.1</version>
</dependency>
  1. 执行数据库初始化脚本
    https://github.com/zhangdaiscott/JimuReport/blob/master/db

  2. 实现了JmReportTokenServiceI

@Slf4j
@Component
public class JimuReportSecurityConfigService implements JmReportTokenServiceI {


    @Override
    public String getUsername(String token) {
        if (StrUtil.isBlank(token)) {
            return null;
        }
        SaSession tokenSessionByToken = StpUtil.getTokenSessionByToken(token);
        if (tokenSessionByToken == null) {
            return null;
        }
        Object loginUserObj = tokenSessionByToken.get("loginUser");
        if (loginUserObj instanceof LoginUser) {
            SysUser user = ((LoginUser) loginUserObj).getUser();
            if (user == null) {
                return null;
            }
            return user.getUserName();
        }
        return null;
    }

    @Override
    public String[] getRoles(String token) {
        return new String[]{"admin"};
    }

    @Override
    public Boolean verifyToken(String token) {
        Object loginId = StpUtil.getLoginIdByToken(token);
        return StpUtil.isLogin(loginId);
    }
}

@hh-cat
Copy link
Author

hh-cat commented Sep 17, 2024

清空了浏览器缓存,换了浏览器,也还是白屏。
导出功能正常,可以导出PDF,PDF中数据也正常。

@hh-cat
Copy link
Author

hh-cat commented Sep 17, 2024

我发现了一点端倪!我新建了一个spring boot项目,和白屏应用连接同一个数据库,然后按照上面的步骤集成报表,可以正常预览报表。我的对比了两个项目,发现 /jmreport/show 接口的响应不一样,请帮看看能不能定位到是哪里的问题。详情如下:

Clip_2024-09-17_10-23-07

@zhangdaiscott
Copy link
Member

不知道了,看看身边同事的情况

@zhangdaiscott
Copy link
Member

要么你浏览器版本过低?

@hh-cat
Copy link
Author

hh-cat commented Sep 21, 2024

我发现了一点端倪!我新建了一个spring boot项目,和白屏应用连接同一个数据库,然后按照上面的步骤集成报表,可以正常预览报表。我的对比了两个项目,发现 /jmreport/show 接口的响应不一样,请帮看看能不能定位到是哪里的问题。详情如下:

Clip_2024-09-17_10-23-07

就是这个问题导致的!哈哈
org.jeecg.modules.jmreport.desreport.entity.JimuReport类中的jsonStr字段值和getJsonStr方法返回值不一样,getJsonStr方法没有直接返回jsonStr字段的值,而是返回了jsonStrJson字段的值。正常的spring boot项目使用Jackson框架序列化接口响应值,默认会调用getter方法获取字段值,但是我的项目中配置了fastjson2来序列化接口响应值,并且设置了FieldBased策略,这种策略不会调用getter方法,而是通过反射直接获取对象的属性,jsonStr属性是没有值的,所以接口就没有返回jsonStr数据,导致报错白屏。
看看这个问题要不要解决一下,我现在是单独为JimuReport类中的jsonStr字段写了序列化的逻辑,功能正常啦。
@zhangdaiscott

@zhangdaiscott zhangdaiscott reopened this Sep 22, 2024
@zhangdaiscott
Copy link
Member

cr

@hoperunChen
Copy link

已修复,待新版本发布。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants