Primefaces 上传后更新graphicImage

Primefaces 上传后更新graphicImage,primefaces,Primefaces,我想在上传新的配置文件图像后更新graphicImage <h:panelGroup id="profileImage" layout="block"> <p:graphicImage id="myImage" cache="false" value="#{myProfile.usersProfileImage}" /> <p:fileUpload fileUploadListener="#{m

我想在上传新的配置文件图像后更新graphicImage

<h:panelGroup id="profileImage" layout="block">
                <p:graphicImage id="myImage" cache="false" value="#{myProfile.usersProfileImage}" />    
                <p:fileUpload fileUploadListener="#{myProfile.fileUploadListener}"
                    mode="advanced" auto="true" sizeLimit="100000"
                    update="profileImage"
                    allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
                <pe:imageAreaSelect id="imageCropper" for="myImage" hide="false"
                    imageHeight="250" imageWidth="250" aspectRatio="1:1">
                    <p:ajax event="selectEnd"
                        listener="#{myProfile.selectEndListener}" />
                </pe:imageAreaSelect>
            </h:panelGroup>
我不知道为什么,但图像没有更新。如果我用f5刷新页面,图像将被更新。
我也尝试过更新=“myImage”,但它不起作用,在PrimeFaces论坛上讨论过多次。
这是一个bug,它在精英版和升级版5.0中得到了修复,在PrimeFaces论坛上讨论了很多次。
这是一个bug,它在精英版和升级版5.0中得到了修复,在PrimeFaces论坛上讨论了很多次。
这是一个bug,它在精英版和升级版5.0中得到了修复,在PrimeFaces论坛上讨论了很多次。
这是一个bug,在elite版本中已经修复,对于upcomfing 5.0,目前没有修复此bug的方法,但存在一些解决方法。另见 该线程中的解决方法建议通过Javascript或支持bean向images src属性附加一个随机参数。这将强制浏览器重新加载图像


如果您使用的是文件上传,请将JS代码插入oncomplete属性。

目前没有修复此错误的方法,但存在一些解决方法。另见 该线程中的解决方法建议通过Javascript或支持bean向images src属性附加一个随机参数。这将强制浏览器重新加载图像


如果您使用的是文件上传,请将JS代码插入oncomplete属性。

目前没有修复此错误的方法,但存在一些解决方法。另见 该线程中的解决方法建议通过Javascript或支持bean向images src属性附加一个随机参数。这将强制浏览器重新加载图像


如果您使用的是文件上传,请将JS代码插入oncomplete属性。

目前没有修复此错误的方法,但存在一些解决方法。另见 该线程中的解决方法建议通过Javascript或支持bean向images src属性附加一个随机参数。这将强制浏览器重新加载图像


如果您使用的是fileUpload,那么将JS代码插入oncomplete属性。

我因这个问题失败了很多次,因此我决定完全改变我处理它的方式。 我使用AWS S3文件系统来承载我的图像。我将其上传到那个里,并将原始文件名、MimeType、newFileName、bucketName等信息保存在数据库中。每个文件都有一个数据库对象。 我上传它没有问题。上传文件后,我强制重定向以更新文件:

NavigationHandler handler = FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
handler.handleNavigation(FacesContext.getCurrentInstance(), null, "/dashboard?faces-redirect=true");
FacesContext.getCurrentInstance().renderResponse();
我通过以下方式查看该文件:

<p:graphicImage value="#{userImageFileBean.endereco}"
                                    title="#{userImageFileBean.userImageFile.title}" 
                                    alt="#{userImageFileBean.userImageFile.alt}" 
                                    />


userImageFileBean endereco方法返回一个带有文件S3地址的字符串。S3存储桶应该具有只读策略。如果您构建的地址仅使用ID和其他常用词,任何人都可以下载您的所有文件。对于这种问题,您可以基于UUID创建地址和名称文件,这很难发现。我希望我能帮助你解决这个让我卧床两周的问题。

我因为这个问题失败了很多次,所以我决定彻底改变我处理这一切的方式。 我使用AWS S3文件系统来承载我的图像。我将其上传到那个里,并将原始文件名、MimeType、newFileName、bucketName等信息保存在数据库中。每个文件都有一个数据库对象。 我上传它没有问题。上传文件后,我强制重定向以更新文件:

NavigationHandler handler = FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
handler.handleNavigation(FacesContext.getCurrentInstance(), null, "/dashboard?faces-redirect=true");
FacesContext.getCurrentInstance().renderResponse();
我通过以下方式查看该文件:

<p:graphicImage value="#{userImageFileBean.endereco}"
                                    title="#{userImageFileBean.userImageFile.title}" 
                                    alt="#{userImageFileBean.userImageFile.alt}" 
                                    />


userImageFileBean endereco方法返回一个带有文件S3地址的字符串。S3存储桶应该具有只读策略。如果您构建的地址仅使用ID和其他常用词,任何人都可以下载您的所有文件。对于这种问题,您可以基于UUID创建地址和名称文件,这很难发现。我希望我能帮助你解决这个让我卧床两周的问题。

我因为这个问题失败了很多次,所以我决定彻底改变我处理这一切的方式。 我使用AWS S3文件系统来承载我的图像。我将其上传到那个里,并将原始文件名、MimeType、newFileName、bucketName等信息保存在数据库中。每个文件都有一个数据库对象。 我上传它没有问题。上传文件后,我强制重定向以更新文件:

NavigationHandler handler = FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
handler.handleNavigation(FacesContext.getCurrentInstance(), null, "/dashboard?faces-redirect=true");
FacesContext.getCurrentInstance().renderResponse();
我通过以下方式查看该文件:

<p:graphicImage value="#{userImageFileBean.endereco}"
                                    title="#{userImageFileBean.userImageFile.title}" 
                                    alt="#{userImageFileBean.userImageFile.alt}" 
                                    />


userImageFileBean endereco方法返回一个带有文件S3地址的字符串。S3存储桶应该具有只读策略。如果您构建的地址仅使用ID和其他常用词,任何人都可以下载您的所有文件。对于这种问题,您可以基于UUID创建地址和名称文件,这很难发现。我希望我能帮助你解决这个让我卧床两周的问题。

我因为这个问题失败了很多次,所以我决定彻底改变我处理这一切的方式。 我使用AWS S3文件系统来承载我的图像。我将其上传到那个里,并将原始文件名、MimeType、newFileName、bucketName等信息保存在数据库中。每个文件都有一个数据库对象。 我上传它没有问题。上传文件后,我强制重定向以更新文件:

NavigationHandler handler = FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
handler.handleNavigation(FacesContext.getCurrentInstance(), null, "/dashboard?faces-redirect=true");
FacesContext.getCurrentInstance().renderResponse();
我通过以下方式查看该文件:

<p:graphicImage value="#{userImageFileBean.endereco}"
                                    title="#{userImageFileBean.userImageFile.title}" 
                                    alt="#{userImageFileBean.userImageFile.alt}" 
                                    />


userImageFileBean endereco方法返回一个带有文件S3地址的字符串。S3存储桶应该具有只读策略。如果您构建的地址仅使用ID和其他常用词,任何人都可以下载您的所有文件。对于这种问题,您可以基于UUID创建地址和名称文件,这很难发现。我希望我能帮助您解决这个让我卧床两周的问题。

这里提供给那些使用PF 6.1(社区版)的人的信息:graphicImage控件仍然存在一些问题。Xecu建议的解决方案很有帮助。这里提供给那些使用PF6.1(社区版)的人的信息:图形仍然有问题