2017-10-13 65 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