使用Vaadin组件的加载图像
A loading image using Vaadin components
当搜索在vaadin TextField组件中运行时,我正在尝试设置加载图像。
因此,我在TextField组件中添加了一个TextChangeListener,并创建了一个Image组件来包含我的加载图像(它是.gif)。加载图像的默认CSS为"display:none"。我所做的是:当在TextField中键入内容时,我在我的Image组件上使用.removeStyleName()方法删除CSS中的"display:none"并在搜索过程中显示加载的图像,当搜索完成时,我使用Image组件上的.addStyleName()方法在CSS中设置"display:none"。前面解释的代码看起来像:
searchField = new TextField();
searchField.setImmediate(true);
searchField.addTextChangeListener(new TextChangeListener() {
public void textChange(TextChangeEvent event) {
myImage.removeStyleName(CSS_STYLE_IMAGE_TO_HIDE)
// some code
myImage.addStyleName(CSS_STYLE_IMAGE_TO_HIDE)
}
});
但问题是在搜索过程中没有显示加载图像。我在代码中放了一些日志,发现图像被显示,然后被隐藏,但只是在搜索结束时。因此,在textChange()方法期间,调用removeStyleName(。
有人知道发生了什么吗?我将感谢任何帮助!
谢谢,
您误解了客户端的行为<->服务器交互。
在您的代码中:
searchField = new TextField();
searchField.setImmediate(true);
searchField.addTextChangeListener(new TextChangeListener() {
public void textChange(TextChangeEvent event) {
myImage.removeStyleName(CSS_STYLE_IMAGE_TO_HIDE)
// some code
myImage.addStyleName(CSS_STYLE_IMAGE_TO_HIDE)
}
});
textChange(…)事件代码是从客户端触发的。然后在服务器端执行,直到事件代码结束。在服务器端处理完textChange(…)代码后,所有的答案/UI修改都被发送回客户端(Webbrowser)。
因此,在textChange()方法中完成的所有UI更改都会在事件完成时作为一个修改累积发送回来。
问题的解决方案是扩展TextField客户端实现以在客户端进行样式修改触发服务器端代码。收到服务器的答案后,您将恢复样式。
你试过这个吗:
myImage.setImmediate(true);
相关文章:
- 如何在谷歌字体加载时显示加载图像
- 预加载图像并插入DOM
- 加载图像时加载图标
- 在页面启动期间加载图像
- 预加载图像image.onload脚本MVC
- 可以't在我的React组件中加载图像
- 加载图像后调整HTML画布的大小
- HTML/JS github页面项目没有't在使用firefox运行时加载图像或声音
- 错误:$injector:modulerr加载图像时模块处于角度
- 谷歌地图加载后隐藏加载图像
- 在照片查看器(Javascript和jQuery)中异步加载图像时可能出现错误
- 正在从字节数组加载图像内容
- 网页上已有tinymce加载图像列表
- 单击提交按钮后加载图像将冻结
- 如何使用Express'正确加载图像;s的静态中间件
- 使用jquery即时加载图像
- Html5画布使用JCanvasScript加载图像
- Javascript使用JCanvaScript在画布中加载图像
- 使用jquery/ajax显示加载图像
- ajax缓存false无法加载图像