hoomb
hoomb

Reputation: 686

show UploadedFile content from Primeface's p:fileUpload in same form without refresh

I'm trying to implement an ImageUpload and show the uploaded Image immediately on same page using DynamicImage. My Problem is, I can't force the p:graphicImage content be refreshed and show the uploaded image after uploading it.

@ManagedBean(name = "myformbean")
@Controller
@ViewScoped
@Data
public class MyFormBean implements Serializable {

    private StreamedContent listImage = null;

    public StreamedContent getListImage() {
        if (listImage == null) {
            try {
                listImage = new DefaultStreamedContent(new FileInputStream("E:/t.jpg"), "image/png"); // load a dummy image
            }
            catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }

        return listImage;
    }

    public void handleFileUpload(FileUploadEvent event) {
        final UploadedFile uploadedFile = event.getFile();

        listImage = new DefaultStreamedContent(new ByteArrayInputStream(uploadedFile.getContents()), "image/png");
    }
}

And in .xhtml file:

<p:graphicImage value="#{myformbean.listImage}" />

Upvotes: 3

Views: 11380

Answers (1)

Daniel
Daniel

Reputation: 37061

if your upload does the work

all you need to do is to set id to <p:graphicImage like this

<p:graphicImage id="refreshMe" value="#{myformbean.listImage}" />

and in your <p:fileUpload set the update attribute to point to the image

like this

<p:fileUpload  auto="true"  ... update="refreshMe" ....

Upvotes: 10

Related Questions