org.primefaces.Modell.DefaultStreamedContent nicht cast auf java.lang.String
Ich bin versucht, ein Bild anzuzeigen, das gespeichert ist, in ein BLOB in eine MySQL -, mit OpenJpa für die Persistenz. Ich bin mit einem <p:graphicImage>
wo durch der Benutzer-Profil-Bild, aber ich bekomme eine Fehlermeldung beim öffnen der Seite.
Dies ist der code von der Seite wo das Foto ist geladen.
<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>
diese Methode gibt mir das Foto, in der Bohne.
@ManagedProperty("#{param.id}")
private Long id;
@PostConstruct
public void init() {
...
id=usuario.getIdUsuario();
}
...
public StreamedContent getImage() {
byte[] bytes=usuario.getFotoPerfil();
return new DefaultStreamedContent(new ByteArrayInputStream(bytes));
}
Ich bin mit Primefaces 4.0, Jsf 2.0, maven.
Ich habe versucht, was ist in diesem post (Post), aber nicht passiert
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)
- Die Antwort ist in dem stack-trace. Bitte keine auslassen von Fragen rund um die Ausnahmen.
- Ich habe mir den stack-trace, aber dennoch kann es nicht sein, weil das nur Klassen, die ich erscheinen soll, auf dem stack Filter sind in einer Sitzung und UFT-8 Codierung.
- Lassen Sie die Schlussfolgerungen auf diejenigen, die Lesen können, die stack-traces 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Zeile aus dem StackTrace
erzählt, dass Sie eigentlich Verwendung
<h:graphicImage>
, nicht<p:graphicImage>
. Die ehemaligen in der Tat nicht unterstützenDefaultStreamedContent
, die völlig erklärt dieses problem. Sie sollten die änderung der<h:graphicImage>
zu<p:graphicImage>
um der Lage sein zu verwendenDefaultStreamedContent
.Also, entweder bist du nicht der code ausgeführt wird Sie denken du läufst (vielleicht bearbeitet
h:
zup:
, aber irgendwie vergessen oder nicht zu bauen/bereitstellen/neu starten), oder du suchst an der falschen Stelle in Ihrem XHTML-Quellcode in einem Versuch, naildown die Ursache. Diese Ausnahme ist zumindest nicht verursacht durch etwas in der XHTML-Quellcode veröffentlicht, so weit Sie Ihre Frage ein.Wenn Sie eigentlich Verwendung
<p:graphicImage>
, dieorg.primefaces.component.graphicimage.GraphicImageRenderer
Klasse erschienen wäre an dieser Stelle in dem stack-trace statt.xmlns:p="http://java.sun.com/jsf/html"
aber das ist de richtige:xmlns:p="http://primefaces.org/ui"
ich es ändern und es funktionierte. Ich danke Ihnen sehr für Ihre Hilfe.