Dans le formulaire Form, seules les méthodes get et post sont prises en charge. Afin d'implémenter la méthode put
1) Configurer HiddenHttpMethodFilter dans SpringMVC
.2) Créez un formulaire de publication de page
3) Créez un élément d'entrée, name="_method", la valeur est la méthode de requête spécifiée
Parmi eux, dans la classe HiddenHttpMethodFilter
obtenez la valeur de "_method " et obtenez la nouvelle méthode de requête.
<input type="hidden" name="_method" value="put" th:if="${employee!=null}"/>
La ème balise est le modèle thymeleaf, ce qui signifie qu'elle ne prendra effet que lorsque l'employé n'est pas vide et que la valeur mise n'est pas sensible à la casse.
Dans la nouvelle version de SpringBoot, cette requête put ne fonctionnait pas. La raison en est que Springboot se configure automatiquement, ce qui nous aide à omettre la première étape de configuration. La méthode de code ci-dessus consiste à réaliser une configuration automatique, mais comme l'annotation @ConditionalOnProperty limite la configuration automatique, la valeur par défaut false n'active pas la configuration, donc la soumission put. de la page ne peut pas être utilisé.
Configurez dans le fichier de configuration des propriétés pour activer la configuration automatique : spring.mvc.hiddenmethod.filter.enabled=true.
De plus, les requêtes DELETE peuvent également être paramétrées de la même manière.
<form th:action="@{/emp/}+${emp.id}" method="post"> <input type="hidden" name="_method" value="delete"/> <button type="submit" class="btn btn-sm btn-danger" > 删除</button> </form>
Tous ceux qui ont étudié mvc savent que si vous souhaitez prendre en charge ces deux requêtes spéciales, vous devez d'abord configurer les filtres suivants dans web.xml :
<!--增加一个HiddenHttpMethodFilter过滤器:目的是给普通浏览器 增加put|delete请求方式--> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Mais SpringBoot ne le fait pas C'est gênant, car cela nous a aidé à intégrer HiddenHttpMethodFilter dans le conteneur IOC par défaut, donc son utilisation est extrêmement simple :
#开启支持put delete请求的过滤器 spring.mvc.hiddenmethod.filter.enabled=true
<!--http请求方式--> <form action="..." method="post"> <input type="hidden" name="_method" value="put" /> <!--value值改成delete 请求方式就为delete了--> </form>Notez que le nom du champ caché ci-dessus doit être "_method". Si vous souhaitez le modifier, vous devez ajouter le bean suivant au fichier. CIO :
@Bean public HiddenHttpMethodFilter hiddenHttpMethodFilter(){ HiddenHttpMethodFilter methodFilter = new HiddenHttpMethodFilter(); methodFilter.setMethodParam("_m");//将隐藏域 _method --> _m return methodFilter; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!