我有一个简单的应用程序,我有一个Tabpanel,其中添加了多个标签。每个选项卡都将从外部URL获取数据并显示数据。
这些外部网址中的数据每30分钟不断变化,但网址仍然相同。
因此,当我单击单个选项卡而不刷新整个页面时,在URL中的原始内容更改后,在选项卡中看不到刷新的数据。我正在使用iframe在每个标签中显示外部网址的内容。
我的问题是,如何在单击标题页时使每个标签自动刷新(或)重新加载标签?
我已经完成了几个已发布的stackoverflow问题,但没有完全帮助。
目前我正在使用http元标记每30秒刷新整个浏览器。但问题是,浏览器设置为第一个标签,用户再次必须点击他选择的标签,这会让人烦恼。
答案 0 :(得分:1)
不要使用网址。只需听取标签上的更改并执行必要的
yourTabPanel.addSelectionHandler(new SelectionHandler<Integer>() {
@Override
public void onSelection(SelectionEvent<Integer> event) {
if (event.getSelectedItem() == 1) {
// do something here // get data for tab1
}
}
});
答案 1 :(得分:1)
您可以向选项卡面板添加选择处理程序。并检查事件中选定的标签项。然后再次将URL设置为相关帧。
示例强>
// Create an empty tab panel
TabPanel tabPanel = new TabPanel();
// create contents for tabs of tabpanel
final Frame cotent1 = new Frame( "http://www.youtube.com/embed/j6cxZp4ii6c?autoplay=true" );
final Frame cotent2 = new Frame( "http://www.youtube.com/embed/j6cxZp4ii6c?autoplay=true" );
// create titles for tabs
String tab1Title = "TAB 1";
String tab2Title = "TAB 2";
// create tabs
tabPanel.add( cotent1, tab1Title );
tabPanel.add( cotent2, tab2Title );
// select first tab
tabPanel.selectTab( 0 );
// set width if tabpanel
tabPanel.setWidth( "400" );
tabPanel.addSelectionHandler( new SelectionHandler<Integer>()
{
@Override
public void onSelection( SelectionEvent<Integer> event )
{
if(event.getSelectedItem() == 0)
{
cotent1.setUrl( "http://www.youtube.com/embed/j6cxZp4ii6c?autoplay=true" );
}
// likewise set the urls to all the content
}
} );
答案 2 :(得分:0)
我对此的猜测是,
您必须拥有所有选项卡的点击处理程序,并且单击该选项卡基本上会刷新您用于填充数据的DataProvider
。这取决于您使用何种方式显示数据。
您需要刷新需要显示的数据容器。如果您可以发布代码,那么使用更合适的解决方案可能会有所帮助。
您可以在一段时间后调用selectTab(int index,boolean fireEvents)
而不是刷新浏览器。