2017-10-13 10 views
2

J'ai un portlet Vaadin de base déployé sur un serveur Tomcat. La page se compose de quelques éléments de formulaire de base. C'est à dire. TextFields & ComboBoxes.Recharger le portlet Vaadin lors de la mise à jour de la page

Si je saisis du texte dans les champs/faites une sélection sur le combo. Lorsque j'appuie sur F5 lorsque la page est ouverte dans un navigateur, toutes les données de la page sont conservées.

Existe-t-il un moyen de forcer Vaadin à reconstruire lors de l'actualisation de la page?

+0

Avez-vous essayé le paramètre '? RestartApplication' comme indiqué dans les documents https://vaadin.com/docs/v8/framework/application/application-lifecycle.html? –

+0

@AxelMeier Je ne sais pas comment cela fonctionne pour un environnement de production – Jay

+0

Je vois. Je pense que j'ai mal compris la question. Je pensais que la question était de chercher un moyen de forcer une page de rafraîchissement en cours de développement. –

Répondre

1

Je l'ai déjà fait par le passé en utilisant l'interface PortletListener que vous offre Vaadin. Selon la façon dont vous avez construit votre page.

Cet exemple de base peut vous aider:

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) { 
    }  
} 

En bref, vous allez entrer dans la méthode handleRenderRequest lorsque vous appuyez sur F5. Vous pouvez donc utiliser votre propre méthode personnalisée pour recréer la page selon vos besoins.

J'espère que cela aide.

+0

C'est exactement ce que je cherchais. Je vous remercie! – David