Heim > Java > javaLernprogramm > Hauptteil

So lösen Sie das Problem, dass die PUT-Anfrage von SpringBoot2 keine Parameter empfangen kann

WBOY
Freigeben: 2023-05-20 20:38:43
nach vorne
1628 Leute haben es durchsucht

HiddenHttpMethodFilter

So lösen Sie das Problem, dass die PUT-Anfrage von SpringBoot2 keine Parameter empfangen kann

Das Formularformular in HTML unterstützt nur GET- und POST-Anfragen, aber Methoden wie DELETE und PUT werden nicht unterstützt, um diese Anfragen in Standard-HTTP-Methoden umzuwandeln, was die Unterstützung ermöglicht GET-, POST-, PUT- und DELETE-Anfragen.

    @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;
    }
Nach dem Login kopieren

Setzen Sie die Methode im Formular der Seite auf „Post“ und fügen Sie wie folgt ein verstecktes Feld hinzu:

<input type="hidden" name="_method" value="put" />
Nach dem Login kopieren

Sehen Sie sich den HiddenHttpMethodFilter-Quellcode an

        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);  
        }  
}
Nach dem Login kopieren

Wie aus dem Quellcode ersichtlich ist, filtert der Filter nur den Beitrag Methode und muss Parameternamen hinzufügen Als verstecktes Feld von _method können Sie auch andere Parameternamen festlegen. Wenn Sie es beispielsweise auf _method_ festlegen möchten, können Sie die Initialisierungsparameter in der HiddenHttpMethodFilter-Konfigurationsklasse festlegen: put (methodParam , „_method_“)

HttpPutFormContentFilter

So lösen Sie das Problem, dass die PUT-Anfrage von SpringBoot2 keine Parameter empfangen kann

Es ist aus HiddenHttpMethodFilter bekannt, dass der Methodenwert des Formulars in HTML nur post oder get sein kann. Wir können die Parameter-Schlüssel-Wert-Paare im Put-Formular über HiddenHttpMethodFilter abrufen. Es gibt eine andere Möglichkeit, die Parameter-Schlüssel-Wert-Paare des Put-Formulars in Spring3 abzurufen, nämlich die Verwendung des HttpPutFormContentFilter-Filters.

    @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;
    }
Nach dem Login kopieren

Der Zweck des HttpPutFormContentFilter-Filters besteht darin, den Wert des Put-Formulars abzurufen und ihn an die Methode im Controller zu übergeben, die mit der Methode RequestMethod.put gekennzeichnet ist.

Im Gegensatz zu HiddenHttpMethodFilter muss im Formular kein verstecktes Feld mit dem Parameternamen _method hinzugefügt werden, und die Methode muss nicht gepostet werden. Sie wird direkt als Put geschrieben, aber dieser Filter kann nur den Enctype-Wert akzeptieren application/x-www-form-urlencoded Formular, das heißt, bei Verwendung dieses Filters muss der Code des Formularformulars wie folgt lauten:

<form action="" method="put" enctype="application/x-www-form-urlencoded">  
    ......  
</form>
Nach dem Login kopieren

Darüber hinaus sind nach dem Testen auch die JSON-Daten in Ordnung. enctype="application/json" ist auch ok

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass die PUT-Anfrage von SpringBoot2 keine Parameter empfangen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage