2017-10-13 60 views
2

我有一個基本的Vaadin Portlet部署在Tomcat服務器上。該頁面由幾個基本的表單元素組成。 IE瀏覽器。 TextFields & ComboBoxes。刷新頁面上的Vaadin Portlet

如果我在字段中輸入文本/在組合上進行選擇。當我在瀏覽器中打開頁面時按F5時,它將保留頁面上的所有數據。

有沒有辦法強制Vaadin重新刷新頁面?

+0

您是否嘗試過??restartApplication'參數,如文檔https://vaadin.com/docs/v8/framework/application/application-lifecycle.html中所述? –

+0

@AxelMeier我不知道在生產環境下工作的效果如何 – Jay

+0

我明白了。我想我誤解了這個問題。我認爲這個問題是尋找一種方法來在開發時強制頁面刷新。 –

回答

1

我以前使用Vaadin爲您提供的PortletListener界面實現了這一點。

取決於您建立頁面的方式。這個基本的例子可以幫助你:

public class MyUI extends UI implements PortletListener { 

    private static final long serialVersionUID = -1708010797368609962L; 
    private VerticalLayout content = new VerticalLayout(); 

    @Override 
    protected void init(VaadinRequest request) { 
     VaadinPortletSession session = (VaadinPortletSession) VaadinPortletSession.getCurrent(); 
     session.addPortletListener(this); 
     content.addComponent(new MyCustomScreen()); 
     setContent(content); 
    } 

    private void reloadPage() { 
     content.removeAllComponents(); 
     content.addComponent(new MyCustomScreen()); 
    } 

    @Override 
    public void handleRenderRequest(RenderRequest request, RenderResponse response, UI uI) { 
     accessSynchronously(this::reloadPage); 
    } 

    @Override 
    public void handleActionRequest(ActionRequest request, ActionResponse response, UI uI) { 
    } 

    @Override 
    public void handleEventRequest(EventRequest request, EventResponse response, UI uI) { 
    } 

    @Override 
    public void handleResourceRequest(ResourceRequest request, ResourceResponse response, UI uI) { 
    }  
} 

總之,當你點擊F5時你會輸入handleRenderRequest方法。因此,您可以使用自己的自定義方法根據需要重新構建頁面。

我希望這會有所幫助。

+0

這正是我所期待的。謝謝! – David