JSF problem z ziarnem i zmienną.

0

Posiadam takie oto klasy .

class Notowanie {
    private double cena;
    private Date dzien;
    private double zmiana;
    private Spolka spolka;

    public Notowanie(){}
    public Notowanie(double cena, Date dzien, double zmiana, Spolka spolka){
        this.cena = cena;
        this.dzien = dzien;
        this.zmiana = zmiana;
        this.spolka = spolka;
    }

    public double getCena(){
        return cena;
    }
    public void setCena(double cena){
        this.cena = cena;
    }
    public Date getDzien(){
        return dzien;
    }
    public void setDzien(Date dzien){
        this.dzien = dzien;
    }
    public double getZmiana(){
        return zmiana;
    }
    public void setZmiana(double zmiana){
        this.zmiana = zmiana;
    }
    public Spolka getSpolka(){
        return spolka;
    }
    public void setSpolka(Spolka spolka){
        this.spolka = spolka;

    }
}
public class Spolka {
    private String nazwa;
    private String symbol;
    private String sektor;
    private List<Notowanie> notowania;
    private Notowanie ostatnie;

    Spolka(){}
    Spolka(String nazwa, String symbol, String sektor){
        this.nazwa = nazwa;
        this.symbol = symbol;
        this.sektor = sektor;
    }
     Spolka(String nazwa, String symbol, String sektor, double cena, double zmiana, Date dzien){
        this(nazwa, symbol, sektor);
        this.notowania = new ArrayList<Notowanie>();
        this.notowania.add(new Notowanie(cena, dzien ,zmiana, this));
    }

    public String getNazwa(){
        return nazwa;
    }
    public void setNazwa(String nazwa){
        this.nazwa=nazwa;
    }

     public String getSymbol(){
        return nazwa;
    }
    public void setSymbol(String symbol){
        this.symbol=symbol;
    }

    public String getSektor(){
        return sektor;
    }
    public void setSektor(String sektor){
        this.sektor=sektor;
    }
    public List<Notowanie> getNotowania(){
        return notowania;
    }
    public void setNotowania(List<Notowanie> notowania){
        this.notowania = notowania;
    }
    public Notowanie getOstatnie(){
        if(this.ostatnie == null)
            if(this.getNotowania() != null && !this.getNotowania().isEmpty())
                this.ostatnie = this.getNotowania().get(this.getNotowania().size() -1);
        return this.ostatnie;
    }
    public void setOstatnie(Notowanie ostatnie){
        this.ostatnie = ostatnie; 
    }
}

Oraz plik .xhtml w którym znajduje się

<ui:repeat value="#{Menedzer.spolki}" var="spolka">
                <tr>
                    <td>#{spolka.nazwa}</td>
                    <td>#{spolka.symbol}</td>
                    <td>#{spolka.ostatnie.cena}</td>
                    <td>#{spolka.ostatnie.zmiana}</td>
                </tr>
            </ui:repeat>

Po odpaleniu strony dostaje komunikat.
/index.xhtml: The class 'pa.Notowanie' does not have a readable property 'cena'.

Przy samym spolka.nazwa oraz spolka.symbol wszystko działa idealnie. Jak zaradzić temu ?

0

Nie radzi sobie z prymitywami? Zmien double na Double i zobacz czy to dziala.

0

Po zmianie na Double dalej to samo.

1

Klasa Notowanie nie jest public, to znaczy ze nie jest dostepna z innego pakietu niz 'pa', czyli np. implementacja EL ktorej uzywasz nie moze sie do niej odwolac. Zrob z niej public class.

0

Faktycznie po zmianie zadziałało. A czy istnieje inny sposób na rozwiązanie tego problemu niż robienie klasy publicznej ?

1

Raczej nie, bo frameworki jak EL robia wszystko za pomoca reflekcji itp. i nie potrafia klasy niepublicznej refleksyjnie przebadac (a raczej potrafi, ale tego nie robi ;d). Wiec raczej nie sadze, musi byc publiczna. A dlaczego? Bo specyfikacja JavaBean mowi ze bean to publiczna klasa z getterami / setterami itp. itd., a EL dziala z JavaBeans.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0