2012-11-07 70 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

相關問題