Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 无法将org.primefaces.model.DefaultStreamedContent转换为java.lang.String_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Jsf 无法将org.primefaces.model.DefaultStreamedContent转换为java.lang.String

Jsf 无法将org.primefaces.model.DefaultStreamedContent转换为java.lang.String,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我试图显示一个存储在MySQL中的BLOB中的图像,使用OpenJpa进行持久化。我使用的是一个,其中显示的是用户的个人资料图片,但打开页面时出错 这是加载照片的页面的代码 <h:panelGrid columns="2"> <p:graphicImage value="#{login.getImage()}" alt="/sistema.ciclos.calidad/resources/perfil/default.png" width="150px" heig

我试图显示一个存储在MySQL中的BLOB中的图像,使用OpenJpa进行持久化。我使用的是一个
,其中显示的是用户的个人资料图片,但打开页面时出错

这是加载照片的页面的代码

<h:panelGrid columns="2">
      <p:graphicImage value="#{login.getImage()}" alt="/sistema.ciclos.calidad/resources/perfil/default.png"  width="150px" height="150px">
           <f:param name="id" value="#{param.id}" />
      </p:graphicImage>
      <h:panelGrid columns="1">
           <h:outputLabel  id="nombre" value="#{login.usuario.getNombreCompleto()}"></h:outputLabel>
           <h:outputLabel id="cargo" value="#{login.usuario.cargo.cargo}"></h:outputLabel>
           <h:outputLabel  id="correo" value="#{login.usuario.correo}"></h:outputLabel>
      </h:panelGrid>
</h:panelGrid>
我使用的是PrimeFaces4.0、JSF2.0和maven。 我尝试了本文()中的内容,但没有成功

javax.servlet.ServletException: org.primefaces.model.DefaultStreamedContent cannot be cast to java.lang.String
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
        org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
        cl.im.ciclos.service.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:32)
        cl.im.ciclos.service.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:32)
        cl.im.ciclos.service.security.LoginFilter.doFilter(LoginFilter.java:52)
    root cause

    java.lang.ClassCastException: org.primefaces.model.DefaultStreamedContent cannot be cast to java.lang.String
        com.sun.faces.renderkit.RenderKitUtils.getImageSource(RenderKitUtils.java:1282)
        com.sun.faces.renderkit.html_basic.ImageRenderer.encodeEnd(ImageRenderer.java:97)
        javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
        com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:295)
        com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
        com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
        javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
        javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
        javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
        com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
        com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
        javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:273)
        com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
        org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
        cl.im.ciclos.service.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:32)
        cl.im.ciclos.service.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:32)
        cl.im.ciclos.service.security.LoginFilter.doFilter(LoginFilter.java:52)

这是堆栈跟踪中的一行

com.sun.faces.renderkit.html_basic.ImageRenderer.encodeEnd(ImageRenderer.java:97)
表示您实际使用的是
,而不是
。前者确实不支持
DefaultStreamedContent
,这完全解释了这个问题。您应该将
更改为
,以便能够使用
DefaultStreamedContent

因此,要么您没有运行您认为正在运行的代码(可能您将
h:
编辑为
p:
,但不知何故忘记或未能重建/重新部署/重新启动),要么您在XHTML源代码中查看了错误的位置,试图找出原因。这个异常至少不是由您问题中发布的XHTML源代码中的任何内容引起的


如果您实际使用的是
,那么
org.primefaces.component.graphicimage.GraphicImageRenderer
类将出现在堆栈跟踪的这个位置。如果这甚至不是真的,那么XML文件中的
xmlns:p=“…”
声明很可能没有正确设置为
http://primefaces.org/ui
。通过这种方式,基本上整个标记都是看不见的,然后JSF尝试将值打印为模板文本。

这一行来自堆栈跟踪

com.sun.faces.renderkit.html_basic.ImageRenderer.encodeEnd(ImageRenderer.java:97)
表示您实际使用的是
,而不是
。前者确实不支持
DefaultStreamedContent
,这完全解释了这个问题。您应该将
更改为
,以便能够使用
DefaultStreamedContent

因此,要么您没有运行您认为正在运行的代码(可能您将
h:
编辑为
p:
,但不知何故忘记或未能重建/重新部署/重新启动),要么您在XHTML源代码中查看了错误的位置,试图找出原因。这个异常至少不是由您问题中发布的XHTML源代码中的任何内容引起的


如果您实际使用的是
,那么
org.primefaces.component.graphicimage.GraphicImageRenderer
类将出现在堆栈跟踪的这个位置。如果这甚至不是真的,那么XML文件中的
xmlns:p=“…”
声明很可能没有正确设置为
http://primefaces.org/ui
。通过这种方式,基本上整个标记都是看不见的,然后JSF尝试将值打印为模板文本。

答案在堆栈跟踪中。请不要在有关异常的问题中忽略它。我已经查看了堆栈跟踪,但仍然不能,因为我计划在堆栈上显示的唯一类、过滤器都在会话和UFT-8编码中。将结论留给那些能够读取堆栈跟踪的人:)答案在堆栈跟踪中。请不要在关于异常的问题中忽略它。我已经查看了堆栈跟踪,但仍然不能,因为我计划在堆栈上显示的唯一类,筛选器正在会话和UFT-8编码中。将结论留给那些能够读取堆栈跟踪的人:)我发现了错误,当我阅读您的回复时,我逐行查看了页面的代码,发现标题与之不符:
xmlns:p=”http://java.sun.com/jsf/html“
但这是不正确的:
xmlns:p=”http://primefaces.org/ui“
我改变了它,它成功了。非常感谢你的帮助。砰!当我编写p:graphicImage时,IntelliJ自动将名称空间p插入java.sun.com/jsf/html。6年后仍然很好的信息,谢谢:-)我发现了错误,当我读到你的回复时,我逐行查看了页面的代码,发现标题不一致:
xmlns:p=”http://java.sun.com/jsf/html“
但这是不正确的:
xmlns:p=”http://primefaces.org/ui“
我改变了它,它成功了。非常感谢你的帮助。砰!当我编写p:graphicImage时,IntelliJ自动将名称空间p插入java.sun.com/jsf/html。6年后仍然是不错的信息,谢谢:-)