2012-11-07 43 views
0

是否有一种简单的方法来强制整个页面从Vaadin重新加载?我有一个portlet,它会影响显示的标题值,这是从单独的JSP中的IBM WebSphere动态高速缓存中提取的。从Vaadin portlet强制页面重新加载

我正在将一个旧的JSF portlet移植到Vaadin,根据页面重新加载动作以反映头模板中的新值。所以现在我需要强制整个页面(而不仅仅是portlet)重新加载,以使其看起来该操作生效。

回答

2

,您可以用JavaScript加载托管网页:

getMainWindow().executeJavaScript("window.location.reload();"); 

我想这也应该做的伎俩在一个门户网站。

+1

谢谢你的工作,但它可以影响页面上的其他porlets。例如,页面上的另一个JSF portlet执行回发,然后在Vaadin porlet上执行一些操作,导致重新加载发生将导致两个问题:1)非常难看的IE/Firefox警告消息“要显示此页面,Firefox必须发送将重复任何操作的信息......“以及2)导致JSF portlet序列化(我猜测为JSF特定问题)并由于瞬态变量而爆炸。我可以解决暂时的问题,但#1仍然是一个问题。 –

+1

是的,这是“整个页面重新加载”。如果只希望加载部分portlet,则必须将这些支持构建到这些portlet中(或者为此使用一些通用服务器特定的扩展)。对于Vaadin应用程序Portlet刷新,您可以调用vaadin.forceSync()JavaScript方法。 – eeq

+0

请注意,Vaadin 7强制通过JavaScript重新加载页面的方式是getUI()。getPage()。getJavaScript()。execute(“window.location.reload();”);'' – herman

相关问题