在 intelij 获得焦点之前,浏览器不会显示上传的图像

Posted

技术标签:

【中文标题】在 intelij 获得焦点之前,浏览器不会显示上传的图像【英文标题】:Browser doesn't display uploaded image until intelij gets focus 【发布时间】:2019-12-20 04:27:19 【问题描述】:

我在使用 thymeleaf 作为模板引擎的 Spring Boot 应用程序中使用 intellij-idea 显示图片时遇到了这个奇怪的问题。 到目前为止,我可以上传图像,但是,它只有在我给 Idea 聚焦时才会显示,这意味着,Idea 在不聚焦时不会刷新图像文件夹。 在此之前,除非我重新启动服务器,否则我根本无法显示图像,但是在我设置“帧停用”策略后,我可以显示新上传的图像,当然只有在我给出想法焦点之后触发图像文件夹的刷新。

我尝试了其他一些改变注册表值的技巧,以及使用开发工具的其他技巧,但没有一个能达到我想要的效果。

有没有办法让 Idea 在更改时刷新其文件夹而没有窗口焦点? 或者,我可以用不同的方式解决这个问题吗?

提前感谢您的宝贵帮助。

这是关于图像显示的部分

<img th:src="@$user.imagePath"/>

imagePath 代表图片在DB中的路径 示例值:http://localhost:8888/images/users_pictures/user_image_5.jpg

我不希望控制器和服务类涉及此问题,因为图像毕竟是上传和显示的,但请不要犹豫,要求我提供可能影响问题的其他源代码。

【问题讨论】:

我不太确定我是否理解您想要做什么:您为什么不在普通浏览器中测试您的应用程序?你如何“上传”图像?为什么你会期望图像会改变?上传后是否有一些 javascript 正在轮询服务器或等待一些 websocket 事件或页面刷新? 嗨,托马斯。我的应用程序只是添加了带有个人资料图片的用户。当我添加新用户时,添加了用户,并且图片确实已加载并保存在 static/images 文件夹中,但是,浏览器不显示图片(显示带有损坏缩略图的图片)。我必须转到我的想法(意味着 IDE 获得焦点)并刷新图像文件夹(新用户图片添加到 intellij 图像文件夹中),当我返回浏览器并刷新它时,图片正确显示. PS:没有使用 Javascript 或任何前端框架。 我的疯狂猜测是,这与 IntelliJ 在 On frame deactivation 上的 Update classes and resources 有关。如果您将图像上传到项目目录而不是 war 文件目录,则可能会发生这种情况。考虑到图像只能从 war 文件中获得,在 IntelliJ 的 Update classes and resources 在 IDE 获得焦点时启动之前,您无法看到它们。 嗨,Kedar。这正是我的问题。有办法解决吗?感谢您的回复。 好吧,他已经暗示了解决问题的方法:“如果您将图像上传到项目目录而不是战争文件目录,则可能会发生这种情况。” - 只是不要 i> 将图像上传到项目目录,但使用 war 文件目录。在生产中不会有任何 IDE 来运行您的应用程序,因此您应该构建它,就好像从一开始就没有在您的机器上一样。您的软件应该从不依赖于用于构建它的 IDE。 【参考方案1】:

如上所述,项目目录不是存储图像的合适位置。 (如果您希望图片在运行或部署之间保持不变,则可能不是部署目录。)相反,您应该:

    将图像存储在数据库中。 将图像存储在可从您的应用程序部署到的位置访问的本地目录中。

在任何一种情况下,您都无法依赖资源 servlet 来提供图像。您必须创建一个控制器来输出适当的图像(来自数据库或文件系统)。

【讨论】:

感谢您的回答。从文件系统中获取它们更有意义。因为我是初学者,所以我只是想确保我能很好地理解你。当您说“将图像存储在可从您的应用程序部署到的位置访问的本地目录中”时,您的意思是服务器机器,对吗? 是的,服务器。

以上是关于在 intelij 获得焦点之前,浏览器不会显示上传的图像的主要内容,如果未能解决你的问题,请参考以下文章

用intelij IDEA 怎么显示一个类的所有方法?

Silverlight 4:如何在键盘焦点上显示工具提示(修订)

html5的placeholder这个属性在获得焦点时怎样让默认的字体消失呢?

图片获得焦点变大并显示在最前方,覆盖后面的图片

Android如何判断控件获取焦点啊?

Delphi做的一款软件,最小化后edit不能获得焦点