I have already determined the list is empty as suggested by this link as below.
<h:outputText value="#{not empty purchasesBean.purchasesList}" />
and showed false,which means the list is empty. I am unable to fix my java code to fill the list, the method is shown below. NOTE:There is code that is commented out just to show different 'data sets' i have tried but did not work.
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.ManagedBean;
import javax.annotation.PostConstruct;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
@ManagedBean
@SessionScoped
//@ViewScoped
public class PurchasesBean implements Serializable{
List<Purchases> purchasesList; // = new ArrayList();
Purchases purchases;
@PostConstruct
public void init(){
this.purchasesList = new ArrayList<Purchases>();
//====================== first data set ==============================
Purchases p1 = new Purchases("Hoop Iron","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100));
Purchases p2 = new Purchases("Hacksaw Blades","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100));
Purchases p3 = new Purchases("Hacksaw Blades","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100));
Purchases p4 = new Purchases("Hacksaw Blades","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100));
Purchases p5 = new Purchases("Hacksaw Blades","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100));
Purchases p6 = new Purchases("Hacksaw Blades","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100));
this.purchasesList.add(p1);
this.purchasesList.add(p2);
this.purchasesList.add(p3);
purchasesList.add(p4);
purchasesList.add(p5);
purchasesList.add(p6);
//====================== second data set ==========================
//
// purchasesList.add(new Purchases("Hoop Iron","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100)));
// purchasesList.add(new Purchases("Hacksaw Blades","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100)));
//===================== third data set =========================
// purchasesList.add(purchases = new Purchases("Hoop Iron","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100)));
// purchasesList.add(purchases = new Purchases("Hacksaw Blades","",new BigDecimal(100),new BigDecimal(100),new BigDecimal(100)));
}
public List<Purchases> getPurchasesList() {
System.out.println("purchases list created........");
return purchasesList;
}
public void setPurchasesList(List<Purchases> purchasesList) {
this.purchasesList = purchasesList;
}
public Purchases getPurchases() {
return purchases;
}
public void setPurchases(Purchases purchases) {
this.purchases = purchases;
}
}
import java.math.BigDecimal;
public class Purchases {
String itemName;
String itemDescrip;
BigDecimal itemPrice;
BigDecimal itemQty;
BigDecimal total;
public Purchases(String itemName,String itemDescrip,BigDecimal itemPrice,BigDecimal itemQty,BigDecimal total){
this.itemName = itemName;
this.itemDescrip = itemDescrip;
this.itemPrice = itemPrice;
this.itemQty = itemQty;
this.total = total;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public String getItemDescrip() {
return itemDescrip;
}
public void setItemDescrip(String itemDescrip) {
this.itemDescrip = itemDescrip;
}
public BigDecimal getItemPrice() {
return itemPrice;
}
public void setItemPrice(BigDecimal itemPrice) {
this.itemPrice = itemPrice;
}
public BigDecimal getItemQty() {
return itemQty;
}
public void setItemQty(BigDecimal itemQty) {
this.itemQty = itemQty;
}
public BigDecimal getTotal() {
return total;
}
public void setTotal(BigDecimal total) {
this.total = total;
}
}
Those two above are my java classes, below is my JSF (xhtml) code Fogive the unused facelets library,it was initially a primefaces data table which i changed into a JSFcore data table to just see where the problem might be but still the data put into the List is not showing at all.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
>
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Hello from Facelets
<br />
<h:link outcome="welcomePrimefaces" value="Primefaces welcome page" />
<h:form>
<h:outputText value="#{not empty purchasesBean.purchasesList}" />
</h:form>
</h:body>
</html>
Why is the list empty even after adding objects to it? Your help is appreciated.