HTML のフォーム フォームは GET リクエストと POST リクエストのみをサポートしますが、DELETE や PUT などのメソッドはサポートされません。リクエストは標準の http メソッドに変換され、GET、POST、PUT、および 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; }
ページのフォームフォームでメソッドをPostに設定し、次のように隠しフィールドを追加します:
<input type="hidden" name="_method" value="put" />
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); } }
ご覧のとおりソース コードから、フィルター Post メソッドのみがフィルターされ、パラメーター名 _method の隠しフィールドを追加する必要があります。他のパラメーター名も設定できます。たとえば、_method_ に設定したい場合は、次のように設定できますHiddenHttpMethodFilter 構成クラスの初期化パラメーター: put (methodParam, "_method_" )
HiddenHttpMethodFilter から、次のメソッド値がHTML のフォームは post または get のみです。Put フォームは HiddenHttpMethodFilter を介して取得できます。パラメータのキーと値のペアであり、Spring3 で Put フォームのパラメータのキーと値のペアを取得する別の方法があります。 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; }
HttpPutFormContentFilter フィルターの機能は、put フォームの値を取得し、それをメソッド RequestMethod.put でマークされたコントローラーのメソッドに渡すことです。
HiddenHttpMethodFilter とは異なり、フォームにパラメーター名 _method を持つ隠しフィールドを追加する必要はありません。メソッドは post である必要はなく、put として直接記述することができますが、このフィルターはenctype 値を application/x -www-form-urlencoded フォームとしてのみ受け入れます。つまり、このフィルターを使用する場合、フォーム form のコードは次のようにする必要があります:
<form action="" method="put" enctype="application/x-www-form-urlencoded"> ...... </form>
また、テスト後はjsonデータもOKですenctype=”application/json”これもOKです
以上がSpringBoot2のPUTリクエストでパラメータが受け取れない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。