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