1

当我运行下面的代码时,Apache Tomcat Log 说:

Property 'recuClientes' not found in type com.swc.rc.recu.UtilsRecu

网页返回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;
    }


}

谢谢..

4

1 回答 1

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 构建后会直接调用它。

顺便说一句,这种演员阵容是一种代码味道。在精心设计的代码中,您不应该在这个特定的构造中需要这种转换。

于 2012-11-30T19:55:20.167 回答