当我运行下面的代码时,Apache Tomcat Log说:
Property 'recuClientes' not found in type com.swc.rc.recu.UtilsRecu
webPage返回No records found.
任何建议?
这是电话
<p:outputPanel>
<h:form>
<p:dataTable var="rec" value="#{rc.recu}">
<p:column headerText="recu">
<h:outputText value="#{rec.deudor}" />
</p:column>
</p:dataTable>
</h:form>
</p:outputPanel>
这是来源, 我可以使用它,不是吗?
@XmlTransient
public Collection<Procs> getProcsCollection() {
return procsCollection;
}
public void setProcsCollection(Collection<Procs> procsCollection) {
this.procsCollection = procsCollection;
}
这是managedBean ..
@ManagedBean(name = "rc")
@SessionScoped
public class UtilsRecu {
private Clientes cliente=new Clientes();
private List <Procs> recu=new LinkedList<Procs>();
public void recuClientes(){
recu=(List<Procs>) cliente.getProcsCollection();
}
public void setRecu(List<Procs> recu) {
this.recu= recu;
}
public List<Procs> getRecu() {
recuClientes();
return recu;
}
}
谢谢..
答案 0 :(得分:0)
您遇到的异常不是由到目前为止显示的Facelets代码引起的。这是由于同一页面中其他地方#{rc.recuClientes}
的使用不正确造成的。也许你已经将它放在模板文本中,如此
#{rc.recuClientes}
并希望它会在加载时执行该方法。但它不会那样工作。它将被解释为一个值表达式,因此它将寻找一个getter方法getRecuClientes()
,它返回一些可以打印到输出的东西。但是因为这样的getter方法不存在,所以你所面临的“属性未找到”异常就会被抛出。
鉴于此方法执行某些业务逻辑(填充列表),应该由某些操作组件调用,例如<h:commandButton>
。
<h:form>
<h:commandButton value="Submit" action="#{rc.recuClientes}" />
</h:form>
或者,如果您打算在初始GET请求期间调用它,则只需使用@PostConstruct
对其进行注释,而无需在视图中的任何位置引用它。
@PostConstruct
public void recuClientes() {
recu = (List<Procs>) cliente.getProcsCollection();
}
这样它将在bean构造之后直接调用。
顺便说一句,演员阵容是一种代码气味。在设计良好的代码中,您不应该在此特定构造中使用该转换。