【问题标题】:p:graphicImage gives NoSuchMethodError after migrating from 5.3 to 6.0 Primefacesp:graphicImage 在从 5.3 迁移到 6.0 Primefaces 后给出 NoSuchMethodError
【发布时间】:2016-10-10 11:31:40
【问题描述】:

我在 Weblogic11g、JSF2.0、Servlet 2.5 上使用 Primefaces 6.0。

我的应用程序能够使用 Primefaces 5.3 渲染动态 jpeg 图像。一旦我迁移到 6.0,我的动态 p:graphicImages 就会给出与 el 相关的 NoSuchMethodError。

PrimeExceptionHandler 日志异常
javax.el.ValueExpression.getValueReference(Ljavax/el/ELContext;)Ljavax/el/ValueReference; java.lang.NoSuchMethodError: javax.el.ValueExpression.getValueReference(Ljavax/el/ELContext;)Ljavax/el/ValueReference; 在 org.primefaces.el.ValueExpressionAnalyzer.toValueReference(ValueExpressionAnalyzer.java:91) 在 org.primefaces.el.ValueExpressionAnalyzer.getExpression(ValueExpressionAnalyzer.java:44) 在 org.primefaces.util.DynamicResourceBuilder.build(DynamicResourceBuilder.java:58) 在 org.primefaces.component.graphicimage.GraphicImageRenderer.getImageSrc(GraphicImageRenderer.java:75) 在 org.primefaces.component.graphicimage.GraphicImageRenderer.encodeEnd(GraphicImageRenderer.java:41) 在 javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:884) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1681) 在 javax.faces.render.Renderer.encodeChildren(Renderer.java:168) 在 javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:854) 在 org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:85) 在 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}" />  

【问题讨论】:

  • 您是否查看了发行说明/迁移指南?
  • 是的,我做到了,但除了更改 primefaces jar 文件外,没有发现任何与我相关的内容。
  • 任何可以提供帮助的线索?

标签: primefaces


【解决方案1】:

根据the API,有问题的方法 (ValueExpression.getValueReference()) 仅在 EL 2.2 之后才存在

由于您使用的是 Servlet 2.5,因此您很可能使用的是 EL 2.1(有关详细信息,请参阅 this answer)。因此,NoSuchMethodError 出现在 EL 2.2 方法中。

因此,您似乎唯一的选择是继续使用 PrimeFaces 5.3,升级到 EL 2.2/Servlet 3.0,或者不再使用 p:graphicImage

除此之外,您还可以将此问题报告给 PrimeFaces 开发人员,因为根据他们的用户指南,他们似乎支持 Servlet 2.5,这可能被视为一个错误。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-05-15
  • 2015-03-25
  • 2019-04-27
  • 1970-01-01
  • 2017-02-25
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多