Muestra la imagen p: fileupload en p: graphicImage preview sin guardarla

Estoy usando PrimeFaces 5.3<p:fileUpload> para cargar una imagen PNG y me gustaría mostrar una vista previa de ella en<p:graphicImage> antes de guardar en la base de datos.

Aquí hay un MCVE:

<h:form enctype="multipart/form-data">
    <p:fileUpload value="#{bean.uploadedFile}" mode="simple" />
    <p:graphicImage value="#{bean.image}" />
    <p:commandButton action="#{bean.preview}" ajax="false" value="Preview" />
</h:form>

private UploadedFile uploadedFile;

public UploadedFile getUploadedFile() {
    return uploadedFile;
}

public void setUploadedFile(UploadedFile uploadedFile) {
    this.uploadedFile = uploadedFile;
}

public void preview() {
    // NOOP for now.
}

public StreamedContent getImage() {
    if (uploadedFile == null) {
        return new DefaultStreamedContent(); 
    } else {
        return new DefaultStreamedContent(new ByteArrayInputStream(uploadedFile.getContents()), "image/png"); 
    }
}

No se produce ningún error en el bean de respaldo, y la imagen no se cargará ni se mostrará en el front-end. El cliente menciona que la imagen devolvió un error 404 no encontrado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta