在页面刷新时重新加载 Vaadin Portlet
Reload Vaadin Portlet on page refresh
我在 Tomcat 服务器上部署了一个基本的 Vaadin Portlet。该页面由一些基本的表单元素组成。 IE。文本字段和组合框。
如果我在字段中输入文本/在组合上进行选择。当我在浏览器中打开页面时按 F5,它会保留页面上的所有数据。
有没有办法强制 Vaadin 在页面刷新时重建?
我过去使用 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 方法。因此,您可以使用自己的自定义方法根据需要重新构建页面。
希望对您有所帮助。
我在 Tomcat 服务器上部署了一个基本的 Vaadin Portlet。该页面由一些基本的表单元素组成。 IE。文本字段和组合框。
如果我在字段中输入文本/在组合上进行选择。当我在浏览器中打开页面时按 F5,它会保留页面上的所有数据。
有没有办法强制 Vaadin 在页面刷新时重建?
我过去使用 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 方法。因此,您可以使用自己的自定义方法根据需要重新构建页面。
希望对您有所帮助。