Récupérer des données après envoie d'un formulaire via Vaadin
Sertoif
-
Sertoif -
Sertoif -
Bonjour,
Je développe actuellement un module sur une application java EE utilisant Vaadin et Maven, cependant il me faudrait récupérer les données après l'envoie de formulaires ( quel qu'il soit ) pour l'afficher dans un Logger.
Je n'ai pas encore trouver de moyen pour répondre à mon problème...
Merci par avance pour votre réponse.
Cordialement.
Je développe actuellement un module sur une application java EE utilisant Vaadin et Maven, cependant il me faudrait récupérer les données après l'envoie de formulaires ( quel qu'il soit ) pour l'afficher dans un Logger.
Je n'ai pas encore trouver de moyen pour répondre à mon problème...
Merci par avance pour votre réponse.
Cordialement.
A voir également:
- Récupérer des données après envoie d'un formulaire via Vaadin
- Whatsapp formulaire opposition - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Trier des données excel - Guide
- Comment récupérer un compte facebook piraté - Guide
1 réponse
Bonjour,
Je ne suis pas sûr d'avoir bien compris le besoin et Vaadin je sais en gros ce que c'est mais sans plus.
Une solution qui marche quasiment tout le temps, c'est de faire un filtre, c'est à dire analyser la requête brute envoyée au serveur avant que Vaadin ne la traite (et éventuellement la réponse après qu'il l'ait traité)
La config se passe dans le web.xml :
Je ne suis pas sûr d'avoir bien compris le besoin et Vaadin je sais en gros ce que c'est mais sans plus.
Une solution qui marche quasiment tout le temps, c'est de faire un filtre, c'est à dire analyser la requête brute envoyée au serveur avant que Vaadin ne la traite (et éventuellement la réponse après qu'il l'ait traité)
package test;
import java.io.IOException;
import javax.servlet.*;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig paramFilterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO opérations avec la ServletRequest avant l'appel à Vaadin
chain.doFilter(request, response); // appel à Vaadin
// TODO opérations avec la ServletResponse après le retour de Vaadin
}
@Override
public void destroy()
}
}
La config se passe dans le web.xml :
<!-- Filtres -->
<filter>
<filter-name>myFilter</filter-name>
<filter-class>test.MyFilter</filter-class>
</filter>
<!-- Servlets -->
<servlet>
<servlet-name>VaadinApplication</servlet-name>
<servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
...
En effet, j'ai oublié de signaler que j'ai déjà développer un filtre ^^ (mais au même endroit). Voici le code:
package net.interlog.isp.engine.api.authentication; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URI; import javax.annotation.Priority; import javax.ws.rs.Priorities; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerRequestFilter; import javax.ws.rs.core.Response; import javax.ws.rs.ext.Provider; import org.glassfish.jersey.message.internal.ReaderWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import net.interlog.isp.engine.models.UserEntity; @Provider @Priority(Priorities.USER) public class ActionFilter implements ContainerRequestFilter { protected static final Logger LOG = LoggerFactory.getLogger(ActionFilter.class); @Autowired private ISPRequestContext ispRequestContext; private String readEntityStream(ContainerRequestContext requestContext) { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); final java.io.InputStream inputStream = requestContext.getEntityStream(); final StringBuilder builder = new StringBuilder(); try { ReaderWriter.writeTo(inputStream, outStream); byte[] requestEntity = outStream.toByteArray(); if (requestEntity.length == 0) { builder.append(""); } else { builder.append(new String(requestEntity)); } requestContext.setEntityStream(new ByteArrayInputStream(requestEntity)); } catch (IOException ex) { LOG.debug("----Exception occurred while reading entity stream :{}", ex.getMessage()); } return builder.toString(); } /** * Create a filter that will display useful informations about the user which is connect on the * current session * * @param request http client request * @return informations in the main logger, called LOG * */ @Override public void filter(ContainerRequestContext requestContext) throws IOException { try { UserEntity user = ispRequestContext.getRequestUser(); // provide user's informations (id, name, date,...) String infoMethode = requestContext.getRequest().getMethod(); URI url = requestContext.getUriInfo().getAbsolutePath(); if (infoMethode.equals("PUT") || infoMethode.equals("POST")) { String params = readEntityStream(requestContext); LOG.debug(String.format("User: %s (id: %s) | url: %s | param: %s", user.getName(), user.getId(), url, params)); } else { LOG.debug(String.format("User: %s (id: %s) | url: %s", user.getName(), user.getId(), url)); } } catch (Exception e) { LOG.debug("RequestContext abort With " + Response.Status.UNAUTHORIZED); } } }Ce filtre me renvoie effectivement bien ce que je lui demande. Cependant, ce filtre est positionner sur un partie engine de l'application web. Le second filtre que je dois mettre en place est du coté utilisateur (UI) et à cause de Vaadin le code ne se fait pas de la même façon...