Redirection vers une page en utilisant des méthodes reposantes?
J'ai créé une page qui demande à l'utilisateur de remplir certains champs de formulaire et quand il soutient, le formulaire est envoyé à une bonne méthode que vous pouvez voir ci-dessous:
@POST
@Path("addUser")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void addUser(@FormParam("username") String username,
@FormParam("password") String password,
@FormParam("id") String id,
@FormParam("group_name") String groupName,
@FormParam("authority_name") String authorityName,
@FormParam("authority_id") String authorityId
)
{
//Something will be done here
}
Comment puis-je rediriger l'utilisateur à la fin de cette fonction de (disons) de l'indice.jsp?
source d'informationauteur Matin Kh
Vous devez vous connecter pour publier un commentaire.
Créer une URI de l'aide
javax.ws.rs.core.UriBuilder
que les cartes les paramètres et autres données que vous souhaitez conserver. Ensuite, utilisezResponse.temporaryRedirect
pour retourner une redirection au client et la passer à l'URI que vous avez construit.changer votre code comme celui-ci, la commande addUser() doit retourner un Objet de Réponse
Enfin, j'en viens à cette conclusion qu'il n'y a pas d'autre moyen que de ce que j'ai fait:
Voici donc ma solution:
Par l'ajout de ce bloc pour mon code, j'ai obtenu ce dont j'avais besoin. Espérons qu'il vous aide ainsi.
Voir ci-dessous l'utilisation de la redirection web services:
Il n'est pas une bonne idée d'utiliser le "WebApplicationException" afin de rediriger la requête. à Jersey (2.4.1), vous devez être en mesure de rediriger la requête via la normale servlet façon, (requête.getServletContext().getRequestDispatcher().vers l'avant() ou tout simplement la réponse.sendRedirect())
Les suivants est comment Maillot de traiter la demande
Que methodHandler est votre RESTE de la classe du service, méthode est la fonction de cette classe de service.
L'étape de la page de redirection devenir straitforward
Obtenir l' (request, response) par le biais de Jersey injection (@Contexte HttpServletRequest request, @Contexte HttpServletResponse response) dans le champ de la classe ou de la fonction paramètre
Demande d'appel.getServletContext().getRequestDispatcher() pour obtenir le répartiteur de "l'avant"
ou utiliser la Réponse.sendRedirect(url)
Une fois que vous avez demande est retournée (juste null), Jersey va essayer de traiter le résultat de la "Réponse.processus(ContainerResponse)". Dans cette étape, il va utiliser la réponse de l'état (204, pas de contenu pour votre retour null).
De sorte que le point clé ici est que vous devez finaliser/fermer objet de réponse avant le retour de votre fonction de service. Sinon, Jersey peut remplacer votre sortie.
Petits conseils sur les raisons de "WebApplicationException" peut remplacer Jersey repsponse. C'est parce que org.glassfish.jersey.serveur.ServerRuntime.mapException() utilisez la "webApplicationException.getResponse()" comme le retour de la réponse résultat.