Rumah > Java > javaTutorial > Bagaimana untuk menyelesaikan masalah bahawa permintaan PUT SpringBoot2 tidak dapat menerima parameter

Bagaimana untuk menyelesaikan masalah bahawa permintaan PUT SpringBoot2 tidak dapat menerima parameter

WBOY
Lepaskan: 2023-05-20 20:38:43
ke hadapan
1642 orang telah melayarinya

HiddenHttpMethodFilter

Bagaimana untuk menyelesaikan masalah bahawa permintaan PUT SpringBoot2 tidak dapat menerima parameter

Borang borang dalam html hanya menyokong permintaan GET dan POST, tetapi kaedah seperti DELETE dan PUT tidak disokong ini Permintaan ditukar kepada kaedah http standard, membenarkan permintaan GET, POST, PUT dan DELETE disokong.

    @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;
    }
Salin selepas log masuk

Tetapkan kaedah untuk Siarkan dalam bentuk borang halaman, dan tambah medan tersembunyi seperti berikut:

<input type="hidden" name="_method" value="put" />
Salin selepas log masuk

Lihat kod sumber 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);  
        }  
}
Salin selepas log masuk

Seperti yang boleh dilihat daripada kod sumber, tapis Hanya kaedah Pos ditapis, dan medan tersembunyi dengan nama parameter _method perlu ditambah Anda juga boleh menetapkan nama parameter lain Sebagai contoh, jika anda ingin menetapkannya kepada _method_, anda boleh tetapkan parameter permulaan dalam kelas konfigurasi HiddenHttpMethodFilter: put (methodParam, "_method_")

HttpPutFormContentFilter

Bagaimana untuk menyelesaikan masalah bahawa permintaan PUT SpringBoot2 tidak dapat menerima parameter

Dari HiddenHttpMethodFilter, kita tahu kaedah itu, borang dalam html hanya boleh dipos atau dapatkan. Kita boleh mendapatkan borang put melalui pasangan nilai kunci Parameter, dan terdapat cara lain untuk mendapatkan pasangan nilai kunci parameter bagi borang put dalam Spring3, iaitu menggunakan. penapis 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;
    }
Salin selepas log masuk

Fungsi penapis HttpPutFormContentFilter adalah untuk mendapatkan nilai borang letak dan hantar ke kaedah yang ditanda RequestMethod.put dalam Pengawal.

Tidak seperti HiddenHttpMethodFilter, tidak perlu menambah medan tersembunyi dengan nama parameter _method dalam borang, dan kaedah itu tidak perlu dipos, ia boleh ditulis terus sebagai meletakkan, tetapi penapis ini hanya boleh terima nilai enctype sebagai borang application/x -www-form-urlencoded, iaitu, apabila menggunakan penapis ini, kod borang borang mestilah seperti berikut:

<form action="" method="put" enctype="application/x-www-form-urlencoded">  
    ......  
</form>
Salin selepas log masuk

Selain itu , selepas ujian, data json juga ok, enctype=”application/json”Ia juga ok

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bahawa permintaan PUT SpringBoot2 tidak dapat menerima parameter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan