2013-08-05 12 views
5

In meiner Einheit:Die Klasse nicht Eigentum

@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; 
} 

Und Code in meiner JSF Seite:

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

Das Ergebnis ist gut. Aber wenn ich Code:

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

konfrontiert ich einen Fehler:

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

Ich verstehe wirklich nicht, dass Fehler. Kannst du mir erklären? Danke

Antwort

9

Der Fehler bedeutet, dass richtige Getter und Setter für Ihre Eigenschaft nicht gefunden werden konnten. Die korrekte Syntax für die Getter und Setter sollte sein:

public int gettId() { 
    return tId; 
} 

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

Wenn Sie nicht immer Sure-Code-Generierung für Ihr Getter und Setter verwenden.

Wenn Sie an der specific convention interessiert sind, bezieht sich Ihr Getter und Setter auf TId nicht tId.

+0

-1 für sagen, dass Getter/Setter sind falsch (stattdessen ist es der Name der Eigenschaft in EL, die falsch ist), +1 für den Hinweis auf einen Link mit eigentlich die richtige Antwort/technische Erklärung. – BalusC

+0

Er definiert seine Eigenschaft als 'private int tId', also dachte ich, wenn er etwas will, das dem entspricht, sollte er Getter und Setter benutzen, wie in meiner Antwort definiert? Sie können den Eigenschaftsnamen natürlich auch in EL ändern. Oder fehlt mir etwas? – bjedrzejewski

+0

EL-Eigenschaften entsprechen nicht den Eigenschaften von privaten Beans. Sie entsprechen dem öffentlichen Bean Getter/Setter. Die in Ihrer Antwort vorgeschlagene Getter/Setter-Syntax ist gemäß Javabeans Spezifikation ungültig (ich habe sie nicht getestet, aber ich wäre nicht überrascht, wenn sie 'PropertyNotFoundException' auf bestimmten EL impls/Versionen und/oder Bean Introspection APIs verursacht). OPs ursprüngliche Getter/Setter-Syntax war gültig, es ist nur der EL-Eigenschaftsname, der basierend auf der Getter/Setter-Syntax falsch ist. – BalusC

Verwandte Themen