Hi!
I’m new in PrimeFaces.
I’m trying to use fileUpload to upload a image and automatically display it in a graphicImage. What happens:
- When I visit the page first time, upload the image, it displayed automatically in graphicImage. Fine!
- When I execute step 1 above, and execute step 1 again (yes, think I get the wrong image first time) the second image isn’t displayed in graphicImage, keeps the first image.
- When I execute step 2 above, and refresh (F5) the page, shows the second image.
I’m using:
NetBeans 6.8;
GlassFish 3;
JSF 2;
My web.xml:
[code]<?xml version="1.0" encoding="UTF-8"?>
<servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>
org.primefaces.resource.ResourceServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>
org.primefaces.webapp.filter.FileUploadFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
[/code]
My page with fileUpload and graphicImage:
[code]<h:outputLabel value="#{bundle.photo}" for=“photo” />
<p:graphicImage id=“photo"
value=”#{personBean.image}" />
<h:outputLabel value="#{bundle.photo}" for="photo" />
<p:fileUpload id="facePhoto" label="#{bundle.open}"
auto="true"
multiple="false"
update="photo"
fileUploadListener="#{personBean.handleFileUpload}" />[/code]
My Bean:
[code]UploadedFile file;
private StreamedContent imageFace;
public StreamedContent getImage() {
System.out.println("personBean.getImage");
if(imageFace != null) {
System.out.println(imageFace.toString());
}
return imageFace;
}
public void setImage(StreamedContent imageFace) {
System.out.println("personBean.setImage");
this.imageFace = imageFace;
}
public void handleFileUpload(FileUploadEvent event) {
System.out.println("personBean.handleFileUpload");
this.file = event.getFile();
try {
setImage(new DefaultStreamedContent(this.file.getInputstream(), this.file.getContentType()));
} catch (IOException ex) {
Logger.getLogger(PersonBean.class.getName()).log(Level.SEVERE, null, ex);
}[/code]
Thanks!