【问题标题】:primefaces dataExporter EL exceptionprimefaces dataExporter EL 异常
【发布时间】:2012-09-06 10:34:03
【问题描述】:

我可以成功构建以下p:dataTable

<p:dataTable id="questionario" var="risp" value="#{domande.elencoRisposte}" >  
        <f:facet name="header">
                Questionario di #{userBean.nome} #{userBean.cognome}
        </f:facet>
        <p:column>    
                <f:facet name="header">
                        <h:outputText value="Domanda" />
                </f:facet>
                <h:outputText value="#{domande.getDomanda(risp.domanda).testo}" />
        </p:column>
        <p:column>
                <f:facet name="header">
                        <h:outputText value="Risposta" />
                </f:facet>
                <h:outputText value="#{risp.testo}" />
        </p:column>
</p:dataTable>

但我得到了例外:

javax.servlet.ServletException: javax.el.PropertyNotFoundException: Property 'getDomanda' not found on type ispra.Questionario
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:229)

当我尝试使用p:dataExporter 组件导出时:

<h:commandLink>
    <p:graphicImage value="pdf.png" />
    <p:dataExporter type="pdf" target="questionario" fileName="questionario" />
</h:commandLink>

domandeispra.Questionario 类型的托管 bean。

有什么想法吗?

代码sn-p:

@ManagedBean(name="domande") 
@SessionScoped 

public class Questionario { 
    private ArrayList<Domanda> elencoDomande; 
    private LinkedHashMap<String,Risposta> risposte; 

    ...

    public Domanda getDomanda(String codice) { 
        return setDomande.get(codice); 
    } 

    public ArrayList<Risposta> getElencoRisposte() { 
        return new ArrayList<Risposta>(this.risposte.values()); 
    }

    ...

} 

Risposta 类具有testodomanda 属性; Domanda 类具有 testo 属性。

【问题讨论】:

  • 您可以发布托管 bean 吗? getDomanda() 是托管 bean 上的方法吗?另外,您使用的是哪个 JSP 容器版本?在 EL 中使用参数调用方法是在 JSP 2.2 中引入的。也许这是个问题?

标签: jsf primefaces


【解决方案1】:

这似乎是他们(出于某种原因)无法修复的bug in PrimeFaces。 我建议你使用PrimeFaces Extensions exporter。这解决了我的问题。

【讨论】:

    【解决方案2】:

    getDomanda 函数在做什么?看起来您将 Domanda 对象放入其中并返回一个 Domanda 对象?

    试试这个:

    <h:outputText value="#{risp.domanda.testo}" />
    

    然后导出功能就起作用了

    【讨论】:

    • getDomanda 返回一个 Domanda 对象,但方法签名是:public Domanda getDomanda(String codice),所以我需要先调用从 risp 获取字符串。我试过 但不起作用。按照 Jens 的建议,我会尽快发布课程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多