【问题标题】:how to refresh embedded page in vaadin (ExternalResource)?如何刷新vaadin(ExternalResource)中的嵌入页面?
【发布时间】:2012-08-07 11:36:35
【问题描述】:

我是 vaadin 框架的新手。当我单击 vaadin 组件的按钮时,我正在尝试刷新嵌入页面。

我发现我们可以使用 Refresher 插件,但我很困惑如何使用它。

有什么建议吗?

【问题讨论】:

  • 刷新插件确实用于设置多线程。例如,有一个侦听器持续侦听系统触发器而不锁定主线程。
  • 你能解释一下嵌入页面是什么意思吗?你有BrowserFrame吗?

标签: vaadin


【解决方案1】:

我还建议您使用复习插件。我也将它用于我的应用程序,并且运行良好。

举个小例子:

//Create the Refresher
final Refresher refresher = new Refresher();
//time period in ms when the Refresher shell call the attached listener
refresher.setRefreshInterval(5000); 
//listener that gets called every 5000ms in this example
refresher.addListener(new MyRefresherListener()); 
//add the Refresher component to your layout
myLayout.addComponent(refresher); 

监听器的实现可能如下所示:

import com.github.wolfie.refresher.Refresher;
import com.github.wolfie.refresher.Refresher.RefreshListener;

public class MyRefreshListener implements RefreshListener {
    private static final long serialVersionUID = 1L;

    @Override
    public void refresh(final Refresher source) {
        System.out.println("I am getting refreshed");
        // add the refresh page of your application logic here
        // e.g. the same code you use for changing views when a button click is happening
    }
}

【讨论】:

    【解决方案2】:

    在布局中添加刷新器时遇到问题

    AbstractOrderedLayout 类型中的方法 addComponent(Component) 不适用于参数(Refresher)

    这是我使用的示例代码:

    public class RefresherDemo extends UI  {
        Refresher refresher;
        Label timeLabel;    
    
        protected void init(VaadinRequest request) {
            final VerticalLayout layout = new VerticalLayout();
            layout.setMargin(true);
            setContent(layout);
    
            timeLabel = new Label(getTime());
    
            refresher = new Refresher();
            refresher.setRefreshInterval(500);
            refresher.addListener(new RefreshListener(){
                @Override
                public void refresh(Refresher source) {
                    timeLabel.setValue(getTime());
                }
            });
            addExtension(refresher);        
    
            layout.addComponent(timeLabel);
    
        }
    
        public String getTime(){
            DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
            Date date = new Date();
            String d = dateFormat.format(date);
            return d;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2014-11-19
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 2013-03-20
      • 2020-10-06
      • 2021-08-14
      相关资源
      最近更新 更多