この記事では、put メソッドと delete メソッドを使用してパラメーター受け渡しの問題を実装する Spring MVC の操作の詳細な説明を共有します。内容は非常に優れており、困っている友人に役立つことを願っています。
最近、インターフェースを変更しました。以前のプロジェクトで resutful を使用していましたが、パラメータを渡すための delete メソッドがバックグラウンドで受け取られていなかったことがわかりました。 Springmvc が delete メソッドをサポートしていないことがわかりました。Web で新しいフィルターを追加する必要があります。 xml
<filter> <!--该过滤器用于处理post请求转换为标准的delete与put请求 --> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <!--servlet为springMvc的servlet名 --> <servlet-name>springMVC</servlet-name> </filter-mapping>
関連する説明は、springmvc は put、delete リクエストパラメータ、フィルターをサポートしていないということです。サーバーのコアコードは次のとおりです
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String paramValue = request.getParameter(this.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 メソッドを標準の put または delete メソッドに変換します
対応するフロントエンド アクセス リクエストは
$.ajax({ type : "POST", url : "demo", dataType : "json", async : false, data : { provinceIds : id, //该参数指定后台接受方法类型,put/delete _method : "delete", }, success : function(data) { });
バックエンド メソッド
@RequestMapping(value = "/demo",method = RequestMethod.DELETE) @ResponseBody public Map demo(HttpServletRequest request, HttpServletResponse response,Integer id){ return null; }
に変更されます。context -type: application/x-www-form-urlencoded リクエストのみがフィルタリングされることに注意してください。
参考:https://blog.csdn.net/jslcylcy/article/details/52789575
以上がSpring MVC は put メソッドと delete メソッドを使用してパラメータ受け渡しの問題を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。