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
-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
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
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