Rumah >Java >javaTutorial >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; }
Tetapkan kaedah untuk Siarkan dalam bentuk borang halaman, dan tambah medan tersembunyi seperti berikut:
<input type="hidden" name="_method" value="put" />
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); } }
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_")
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; }
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>
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!