Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表显示使用java服务器面的另一个类中的空值_Java_List_Jsf 2 - Fatal编程技术网

列表显示使用java服务器面的另一个类中的空值

列表显示使用java服务器面的另一个类中的空值,java,list,jsf-2,Java,List,Jsf 2,我有一个对象列表,我在我的xyz java类中使用它,它成功地在内存中存储了一些数据,我可以在xyz类中使用它,但我有另一个类作为abc,我想在其中使用这个列表,但是当我在abc类中创建xyz类的对象并设置列表的getter时,它会显示为null。 我正在使用Java服务器面 public class xyz{ private List<Car> trackReportData; public void getTrackData(){ try {

我有一个对象列表,我在我的xyz java类中使用它,它成功地在内存中存储了一些数据,我可以在xyz类中使用它,但我有另一个类作为abc,我想在其中使用这个列表,但是当我在abc类中创建xyz类的对象并设置列表的getter时,它会显示为null。 我正在使用Java服务器面

public class xyz{

 private List<Car> trackReportData;

public void getTrackData(){

try {
                totalFuelConsumedForAllTrip = 0;
                totalRefueling = 0;
                totalDuration = "";

                int minutes, hours;
                minutes = hours = 0;

                for (RefuelEventBean reb : refuelDataLog) {
                    totalRefueling += reb.getRefuelLiters();

                }

                int totalTheftLiters = 0;
                for (RefuelEventBean reb : theftDataLog) {
                    totalTheftLiters += reb.getRefuelLiters();
                    System.out.println("theftDataLog recrods =" + reb.getRefuelLiters());
                }

                int firstVal = tripDataLog.get(0).getFuelLiter1();
                int lstVal = tripDataLog.get(a).getFuelLiter2();
                totalFuelConsumedForAllTrip = firstVal + totalRefueling - lstVal - totalTheftLiters;
                totalFuelConsumedForAllTrip = totalFuelConsumedForAllTrip < 0 ? totalFuelConsumedForAllTrip * (-1) : totalFuelConsumedForAllTrip;

                for (TripEventBean teb : tripDataLog) {
                    teb.setSerialNo(counterTripDue++);
                    tDuration += teb.getDuration();
//                    totalConsumedLtr += teb.getTotalFuelLiter() < 0 ? 0 : teb.getTotalFuelLiter();
//                    ttlRefuel += teb.getRefueling();

                }

                if (tDuration > 0) {

                    minutes = (int) (((tDuration / 1000) / 60) % 60);
                    hours = (int) ((tDuration / 1000) / 3600);
                }
                String min = minutes < 10 ? "0" + minutes : "" + minutes;
                String hour = hours < 10 ? "0" + hours : "" + hours;

                totalDuration = "" + hour + ":" + min;

                //Start to End time 
                //start time:     
                Calendar strTime = tripDataLog.get(0).getParam1().getDateTime();
                //end time
                Calendar endTime = tripDataLog.get(a).getParam2().getDateTime();

                //System.out.println("totalDuration" + totalDuration);
                dailyTrakingReportBean.setTotalConsumedLtr(totalFuelConsumedForAllTrip);
                dailyTrakingReportBean.setTotalTheftFuel(totalTheftLiters);

                dailyTrakingReportBean.setTotalTrips(numberOfTrips);
                dailyTrakingReportBean.setTotalDuration(totalDuration);
                dailyTrakingReportBean.setTotalKmRun(totalDistance);
                dailyTrakingReportBean.setStartTime(strTime);
                dailyTrakingReportBean.setEndTime(endTime);
                dailyTrakingReportBean.setMaxTemp(maxTemp);
                dailyTrakingReportBean.setMinTemp(minTemp);
                dailyTrakingReportBean.setTotalCommercialPowerOff(cpOffCounter);
                dailyTrakingReportBean.setTotalRefueling(totalRefueling);

                c = new Car(id, customer, vehicle, unit, dailyTrakingReportBean, param);

                totalConsumedLtr = 0;
                trackReportData.add(c);                
                dailyTrakingReportBean = new DailyTrakingReportBean();

            } catch (Exception e) {
                System.out.println("error in duration");
            }


      }

 public List<Car> getTrackReportData() {

        return this.trackReportData;
    }

    public void setTrackReportData(List<Car> trackReportData) {
        this.trackReportData = trackReportData;
    }


}

//another class where i am using my List:

@ManagedBean
@SessionScoped
public class abc{

    @ManagedProperty(value="#{xyz}")

    xyz dtb;

   // private List<Car> fleetReportData;

    //Kilometer Driven
    private BarChartModel animatedModel1;


    public abc() {

//      fleetReportData = new ArrayList<>();
        dtb = new DailyTrackingBean();
        List<Car> fleetReportData = dtb.getTrackReportData(); //null

    }
公共类xyz{
私有列表跟踪报告数据;
public void getTrackData(){
试一试{
totalFuelConsumedForAllTrip=0;
总换料量=0;
totalDuration=“”;
整数分钟,小时;
分钟=小时=0;
对于(REFEELDENTBEAN reb:REFEELDATALOG){
TotalRefuelliters+=reb.getRefuelLiters();
}
int totalTheftLiters=0;
对于(换料燃油箱reb:theftDataLog){
totalTheftLiters+=reb.getRefuelLiters();
System.out.println(“theftDataLog recrods=“+reb.getRefuelLiters());
}
int firstVal=tripDataLog.get(0.getFueliter1();
int lstVal=tripDataLog.get(a.getfueliter2();
totalFuelConsumedForAllTrip=firstVal+TotalFueling-lstVal-totalTheftLiters;
totalFuelConsumedForAllTrip=totalFuelConsumedForAllTrip<0?totalFuelConsumedForAllTrip*(-1):totalFuelConsumedForAllTrip;
for(TripEventBean teb:tripDataLog){
teb.setSerialNo(counterTripDue++);
tDuration+=teb.getDuration();
//totalConsumedLtr+=teb.getTotalFuelLiter()<0?0:teb.getTotalFuelLiter();
//ttlRefuel+=teb.getfuel();
}
如果(t持续时间>0){
分钟=(int)((t持续时间/1000)/60)%60);
小时数=(整数)((t持续时间/1000)/3600);
}
字符串最小值=分钟<10?“0”+分钟:“+分钟;
字符串小时=小时<10?“0”+小时:“+小时;
总持续时间=“小时+”:“+分钟;
//开始到结束时间
//开始时间:
Calendar strTime=tripDataLog.get(0.getParam1().getDateTime();
//结束时间
Calendar endTime=tripDataLog.get(a).getParam2().getDateTime();
//系统输出打印项次(“总持续时间”+总持续时间);
dailyTrakingReportBean.setTotalConsumedLtr(totalFuelConsumedForAllTrip);
设置TotalTheftFuel(totalTheftLiters);
dailyTrakingReportBean.setTotalTrips(numberOfTrips);
setTotalDuration(totalDuration);
dailyTrakingReportBean.setTotalKmRun(总距离);
dailyTrakingReportBean.setStartTime(strTime);
setEndTime(endTime);
dailyTrakingReportBean.setMaxTemp(maxTemp);
dailyTrakingReportBean.setMinTemp(minTemp);
设置TotalCommercialPowerOff(cpOffCounter);
dailyTrakingReportBean.setTotalRefunk(TotalRefunk);
c=新车(id、客户、车辆、单位、dailyTrakingReportBean、参数);
totalConsumedLtr=0;
trackReportData.add(c);
dailyTrakingReportBean=新的dailyTrakingReportBean();
}捕获(例外e){
System.out.println(“持续时间错误”);
}
}
公共列表getTrackReportData(){
返回此.trackReportData;
}
public void setTrackReportData(列出trackReportData){
this.trackReportData=trackReportData;
}
}
//我正在使用列表的另一个类:
@ManagedBean
@会议范围
公共课abc{
@ManagedProperty(value=“#{xyz}”)
xyz-dtb;
//私有列表数据;
//行驶公里
私有条形图模型animatedModel1;
公共广播{
//fleetReportData=new ArrayList();
dtb=新的DailyTrackingBean();
List fleetReportData=dtb.getTrackReportData();//null
}

如果trackReportData在构造函数中根据注释用一个新的参数初始化(不确定,因为您没有给出完整的代码),因为您调用 dailyTrakingReportBean=new dailyTrakingReportBean();方法结束后,它将重新初始化为空。 既然你说你得到的是空的而不是空的,那么还有别的事情正在发生。
您能否发布一个简短、自包含、正确示例的完整代码来解决问题。

您在
abc
构造函数中创建的
DailyTrackingBean
实例的
trackReportData
变量从未初始化过,您需要获取该实例的
DailyTrackingBean
引用已在此新实例上初始化了
trackReportData
变量,或在
getTrackReportData()
之前调用了
getTrackReportData()
。抱歉,它是在其构造函数中初始化的。我忘了共享构造函数。DailyTrackingBean什么都不是,它只是我的xyz类