Maison > Java > javaDidacticiel > le corps du texte

Comment résoudre le problème selon lequel la requête PUT de SpringBoot2 ne peut pas recevoir de paramètres

WBOY
Libérer: 2023-05-20 20:38:43
avant
1629 Les gens l'ont consulté

HiddenHttpMethodFilter

Comment résoudre le problème selon lequel la requête PUT de SpringBoot2 ne peut pas recevoir de paramètres

Le formulaire en HTML ne prend en charge que les requêtes GET et POST, mais les méthodes telles que DELETE et PUT ne sont pas prises en charge. Spring3 a ajouté un filtre qui peut convertir ces requêtes en méthodes http standard, permettant ainsi la prise en charge. Requêtes GET, POST, PUT et DELETE.

    @Bean
    public FilterRegistrationBean<HiddenHttpMethodFilter> testFilterRegistration3() {
        FilterRegistrationBean<HiddenHttpMethodFilter> registration = new FilterRegistrationBean<HiddenHttpMethodFilter>();
        registration.setFilter(new HiddenHttpMethodFilter());//添加过滤器
        registration.addUrlPatterns("/*");//设置过滤路径,/*所有路径
        registration.setName("HiddenHttpMethodFilter");//设置优先级
        registration.setOrder(2);//设置优先级
        return registration;
    }
Copier après la connexion

Définissez la méthode sur Post dans le formulaire de la page et ajoutez un champ masqué comme suit :

<input type="hidden" name="_method" value="put" />
Copier après la connexion

Affichez le code source de HiddenHttpMethodFilter

        String paramValue = request.getParameter(methodParam);  
        if("POST".equals(request.getMethod()) && StringUtils.hasLength(paramValue)) {  
            String method = paramValue.toUpperCase(Locale.ENGLISH);  
            HttpServletRequest wrapper = new HttpMethodRequestWrapper(request, method); 
            filterChain.doFilter(wrapper, response);  
        } else  
        {  
            filterChain.doFilter(request, response);  
        }  
}
Copier après la connexion

Comme le montre le code source, le filtre filtre uniquement la publication méthode et doit ajouter des noms de paramètres. Comme champ caché de _method, vous pouvez également définir d'autres noms de paramètres. Par exemple, si vous souhaitez le définir sur _method_, vous pouvez définir les paramètres d'initialisation dans la classe de configuration HiddenHttpMethodFilter : put (methodParam). , "_method_")

HttpPutFormContentFilter

Comment résoudre le problème selon lequel la requête PUT de SpringBoot2 ne peut pas recevoir de paramètres

Il est connu de HiddenHttpMethodFilter , la valeur de la méthode du formulaire en HTML ne peut être que post ou get. Nous pouvons obtenir les paires clé-valeur de paramètre dans le formulaire put via HiddenHttpMethodFilter. est une autre façon d'obtenir les paires clé-valeur de paramètre du formulaire put dans Spring 3, qui consiste à utiliser le filtre HttpPutFormContentFilter.

    @Bean
    public FilterRegistrationBean<HttpPutFormContentFilter> testFilterRegistration2() {
        FilterRegistrationBean<HttpPutFormContentFilter> registration = new FilterRegistrationBean<HttpPutFormContentFilter>();
        registration.setFilter(new HttpPutFormContentFilter());//添加过滤器
        registration.addUrlPatterns("/*");//设置过滤路径,/*所有路径
        registration.setName("HttpPutFormContentFilter");//设置优先级
        registration.setOrder(2);//设置优先级
        return registration;
    }
Copier après la connexion

La fonction du filtre HttpPutFormContentFilter est d'obtenir la valeur du formulaire put et de la transmettre à la méthode du Controller marquée avec la méthode RequestMethod.put.

Différent de HiddenHttpMethodFilter, il n'est pas nécessaire d'ajouter un champ caché avec le nom du paramètre _method dans le formulaire, et la méthode n'a pas besoin d'être post, elle est écrite directement telle que put, mais ce filtre ne peut accepter que la valeur enctype application/x-www-form-urlencoded form, c'est-à-dire que lors de l'utilisation de ce filtre, le code du formulaire form doit être le suivant :

<form action="" method="put" enctype="application/x-www-form-urlencoded">  
    ......  
</form>
Copier après la connexion

De plus, après tests, les données json sont également ok, enctype="application/json" est également ok

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal