程序数据集问题

获取城市接口的数据

在idea 上正常运行  finereport上导入相关的包后能编译成功,但就是获取不到数据。

package com.fr;

import com.fr.data.AbstractTableData;

import com.yang.api.weather.cityApi.CityApi;

import com.yang.model.weather.city.City;

import com.yang.model.weather.city.CityResult;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.util.Arrays;

/**

 * @Auther: zongsenyang

 * @Date: 2021/5/11 - 9:41

 * @description: com.demo.model.city

 * @version: 1.0

 */

public class cityTest extends AbstractTableData {

    public static void main(String[] args) {

        new cityTest();

    }

    /**

     * 定义程序数据集的列名以及数据保存的位置

     */

    private String[] columnNames;

    private Object[][] rowData;

    public cityTest(){

        String[] fieldNames=getFieldNames(new City());

        String[] columnNames=new String[fieldNames.length];

        for (int i=0;i<columnNames.length;i++){

            columnNames[i]=fieldNames[i];

        }

        City[] cities=getCities();

        Object[][] datas=new Object[cities.length][columnNames.length];

        for (int i=0;i<datas.length;i++){

            for (int j=0;j<datas[i].length;j++){

                datas[i][j]=getFieldValueByName(columnNames[j],cities[i]);

            }

        }

        this.columnNames=columnNames;

        this.rowData=datas;

        System.out.println(Arrays.toString(this.columnNames));

        for(int a=0;a<10;a++){

            System.out.println("------------------------");

            for(int b=0;b<rowData[a].length;b++) {

                System.out.println(rowData[a][b]);

            }

        }

    }

    /**

     *获取返回的数据

     */

    private City[] getCities(){

        CityResult cr=new CityApi().getCityResult();

        return cr.getResult();

    }

    /**

     *获取对象属性名

     */

    private static  String[] getFieldNames(Object obj){

        Field[] fields=obj.getClass().getDeclaredFields();

        String[] fieldNames=new String[fields.length];

        for(int i=0;i<fields.length;i++){

            //System.out.println(fields[i].getName());

            fieldNames[i]=fields[i].getName();

        }

        return fieldNames;

    }

    /**

     * 根据属性名获取数据

     */

    private static Object getFieldValueByName(String fieldName, Object o) {

        try {

            String firstLetter = fieldName.substring(0, 1).toUpperCase();

            String getter = "get" + firstLetter + fieldName.substring(1);

            Method method = o.getClass().getMethod(getter, new Class[] {});

            Object value = method.invoke(o, new Object[] {});

            return value;

        } catch (Exception e) {

            return null;

        }

    }

    public int getColumnCount()  { return columnNames.length; }

    public String getColumnName(int columnIndex)  { return columnNames[columnIndex]; }

    public int getRowCount() { return rowData.length; }

    public Object getValueAt(int rowIndex, int columnIndex) { return rowData[rowIndex][columnIndex]; }

}

image.png

image.png

上面是Linux 上的   

在自己的电脑是可以获取到数据的

image.png

FineReport 啊嘞嘞 发布于 2021-6-3 15:57 (编辑于 2021-6-3 16:03)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
烟尘Lv6高级互助
发布于2021-6-3 16:14

本地能获取到,网页预览报表有值,放到服务器上就报错?

检查一下服务器jar包是否引入,class文件的package路径是否正确?tomcat要重启的。

  • 啊嘞嘞 啊嘞嘞(提问者) tomcat 需要重启吗?没重启过。。。
    2021-06-03 16:40 
  • 烟尘 烟尘 回复 啊嘞嘞(提问者) 对于修改jar包或者class之类的底层文件,需要重启,模版不需要
    2021-06-03 16:45 
  • 2关注人数
  • 345浏览人数
  • 最后回答于:2021-6-3 16:14
    请选择关闭问题的原因
    确定 取消
    返回顶部