web-dev-qa-db-fra.com

RequestMethod POST et GET dans le même contrôleur?

Tout d’abord, voici ma Controller:

@RequestMapping(value = "/esta", method = RequestMethod.POST)
public String handleRequest(HttpServletRequest request) {

    Esta estaobject = new Esta();
    // To test, if the parameters are set
    String user = request.getParameter("user");
    String name = request.getParameter("name");
    String shortname = request.getParameter("shortname");
    String was_admin_string = request.getParameter("was_admin");
    String sap_nr = request.getParameter("sap_nr");
    String etl_string = request.getParameter("etl");

    if (user != null && name != null && shortname != null && was_admin_string != null && sap_nr != null && etl_string != null) {
        some code...
    }

    request.getSession().setAttribute("esta", estaobject);

    return "esta";
}

Lorsque je visite le site, il vérifie avec l'instruction if- s'il existe certains paramètres.
Si non, alors il devrait simplement afficher mon formulaire. Ensuite, lorsque je remplis le formulaire, il l'envoie avec POST et maintenant, il y a quelques paramètres et il passe par l'instruction if-.

Mon problème est le suivant: lorsque je visite le site pour la première fois, il ne s'agit pas d'une demande POST-, je reçois donc le message d'erreur Request method 'GET' not supported.
Mais changer le formulaire en une demande GET- n'est pas une option pour moi. Il doit être POST.

Donc, existe-t-il une solution pour gérer le même contrôleur dans les demandes POST et GET?

10
Michael Schmidt

Faites-en un tableau de valeurs de méthodes auxquelles il est mappé, comme ceci:

@RequestMapping(value = "/esta", method = {RequestMethod.POST, RequestMethod.GET})
23
CorayThan

Ou vous pouvez écrire des méthodes séparées

@RequestMapping(value = {#some_vale}, method = RequestMethod.GET)
public random_method #1{
}

@RequestMapping(value = { #some_value }, method = RequestMethod.POST)
public random_method #2{
}

vous pouvez maintenant utiliser votre page Web spécifique et une autre page pour remplir le formulaire. J'espère que cela vous aidera.

2
myk.

Au printemps, les développeurs peuvent utiliser RequestMethod.POST et RequestMethod.GET sur le même contrôleur pour créer un tableau de méthodes comme celui-ci:

@RequestMapping(value = "/esta", method = {RequestMethod.POST, RequestMethod.GET})
public String handleRequest(HttpServletRequest request) {
//Implementation of your code.
} 
0
Syeful Islam