2013-08-05 70 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

相关问题