2016-10-10 30 views
0

我在Weblogic11g,JSF2.0,Servlet 2.5上使用Primefaces 6.0。p:graphicImage在從5.3遷移到6.0之後提供NoSuchMethodError Primefaces

我的應用程序能夠使用Primefaces 5.3渲染動態jpeg圖像。一旦我遷移到6.0,我的動態p:graphicImages給與el相關的NoSuchMethodError。

PrimeExceptionHandler logException
javax.el.ValueExpression.getValueReference(Ljavax/el/ELContext;)Ljavax/el/ValueReference; java.lang.NoSuchMethodError: javax.el.ValueExpression.getValueReference(Ljavax/el/ELContext;)Ljavax/el/ValueReference; at org.primefaces.el.ValueExpressionAnalyzer.toValueReference(ValueExpressionAnalyzer.java:91) at org.primefaces.el.ValueExpressionAnalyzer.getExpression(ValueExpressionAnalyzer.java:44) at org.primefaces.util.DynamicResourceBuilder.build(DynamicResourceBuilder.java:58) at org.primefaces.component.graphicimage.GraphicImageRenderer.getImageSrc(GraphicImageRenderer.java:75) at org.primefaces.component.graphicimage.GraphicImageRenderer.encodeEnd(GraphicImageRenderer.java:41) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:884) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1681) at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:854) at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:85) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:72) e

@ManagedBean(name="filebean") 
@RequestScoped 


public class FileBean { 

private StreamedContent image; 

public StreamedContent getImage() { 
    try { 
     File file = new File("C:/LEAVEMODULEFOLDER/569_q318d09lou9mafbqsdgsqph1ar_cbblogopng.jpg"); 

     System.out.println(""+file.canRead()); 
     image = new DefaultStreamedContent(new FileInputStream(file), "image/jpeg"); 

} catch (Exception e) { 
    log.error("Error in ::" + e); 
    log.error(Utility.getStackTrace(e)); 
} 



return this.image; 
} 
} 

的XHTML代碼如下

<p:graphicImage value="#{filebean.image}" /> 
+0

您是否檢查發佈註釋/遷移指南? – Kukeltje

+0

是的,我做了,但沒有發現任何與我相關的東西,除了更改primefaces jar文件。 – ZEE

+0

任何可以提供幫助的線索? – ZEE

回答

1

根據the API所討論的方法(ValueExpression.getValueReference())不僅存在,因爲EL 2.2

由於正在使用的Servlet 2.5,則最有可能使用EL 2.1(有關更多信息,請參閱this answer)。因此發生在EL 2.2方法中。

因此,您似乎只有選擇使用PrimeFaces 5.3,升級到EL 2.2/Servlet 3.0或不再使用p:graphicImage

除此之外,您還可以將此問題報告給PrimeFaces開發者,因爲他們似乎根據用戶指南支持Servlet 2.5,所以這可能被認爲是一個錯誤。

+0

謝謝。我會將其報告給Primefaces。 – ZEE

+1

Primefaces將此視爲增強請求https://github.com/primefaces/primefaces/issues/1859 – ZEE