2013-08-05 23 views
5

W moim podmiot:Klasa nie posiada własności

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column(unique=true, nullable=false) 
private int tId; 
.... 
public int getTId() { 
     return this.tId; 
} 

public void setTId(int tId) { 
     this.tId = tId; 
} 

i kod w mojej strony JSF:

<ui:repeat value="#{techCat.techsOfCat}" var="post"> 
    <h:outputText value="#{post.getTId()}"/> 
     ... 
</ui:repeat> 

Wynik jest dobry. Ale gdybym kodu:

<ui:repeat value="#{techCat.techsOfCat}" var="post"> 
    <h:outputText value="#{post.tId}"/> 
    ... 
</ui:repeat> 

wychodził błąd:

value="#{post.tId}": The class 'model.Technology' does not have the property 'tId'. 

ja naprawdę nie rozumieją, że błąd. Czy możesz mi wyjaśnić? Dzięki

Odpowiedz

9

Błąd oznacza, że ​​prawidłowe pliki pobierające i ustawiające nie mogły zostać zlokalizowane dla Twojej właściwości. Poprawna składnia dla getter i setter powinno być:

public int gettId() { 
    return tId; 
} 

public void settId(int tId) { 
    this.tId = tId; 
} 

Jeśli nie sure- zawsze używać generowanie kodu dla pobierające i ustawiające.

Jeśli interesuje Cię specific convention, Twój program pobierający i ustawiający będą odnosić się do TId, a nie tId.

+0

-1 za powiedzenie, że getter/setter są złe (zamiast tego jest to nazwa właściwości w EL, która jest błędna), +1 za wskazanie linku z właściwie poprawną odpowiedzią/wyjaśnieniem technicznym. – BalusC

+0

On definiuje swoją własność jako "private int td", więc pomyślałem, że jeśli chce czegoś, co mu odpowiada, to powinien używać getterów i seterów zdefiniowanych w mojej odpowiedzi? Możesz również oczywiście zmienić nazwę nieruchomości w EL. Czy może czegoś brakuje? – bjedrzejewski

+0

Właściwości EL nie odpowiadają prywatnym właściwościom fasoli. Odpowiadają one getterowi/seterowi. W twojej odpowiedzi proponowana składnia getter/setter jest nieprawidłowa zgodnie ze specyfikacją Javabeans (nie testowałem jej, ale nie byłbym zaskoczony, gdyby nadal powodował 'PropertyNotFoundException' na niektórych EL impl/versions i/lub API introspekcji Bea). Oryginalna składnia gettera/ustawiającego OP była prawidłowa, jest to tylko nazwa właściwości EL, która jest błędna na podstawie składni getter/setter. – BalusC