2013-08-05 32 views
5

在我的實體:類沒有財產

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

和代碼在我的JSF頁面:

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

結果是好的。但是,如果我的代碼:

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

我遇到了一個錯誤:

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

我真的不明白,錯誤。你能向我解釋一下嗎?謝謝

回答

9

錯誤意味着無法找到正確的getter和setter爲您的財產。你的getter和setter的正確語法應該是:

public int gettId() { 
    return tId; 
} 

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

如果你不確定 - 總是爲你的getters和setter使用代碼生成。

如果您對specific convention感興趣,則您的吸氣和吸氣器將與TId而不是tId相關。

+0

-1表示getter/setter是錯誤的(相反,它是EL中的屬性名稱是錯誤的),+1用於指出實際上正確答案/技術解釋的鏈接。 – BalusC

+0

他將自己的財產定義爲'private int tId',所以我想如果他想要與此相對應的東西,他應該使用我的答案中定義的getter和setter?您當然也可以在EL中更改屬性名稱。或者我錯過了什麼? – bjedrzejewski

+0

EL屬性不對應於私有bean屬性。它們對應於公共bean getter/setter。根據Javabeans規範(我沒有對它進行測試,但是如果它在某些EL impls /版本和/或bean內省API中仍然導致'PropertyNotFoundException'),我不會感到驚訝。 OP的原始getter/setter語法是有效的,它只是基於getter/setter語法而錯誤的EL屬性名稱。 – BalusC