Я обновляю зависимости приложения Spring Boot с помощью встроенного сервера Tomcat. При прохождении и обновлении с пружины 5.1 -> 5.2 и Spring Boot 2.1 -> 2.2 возникла проблема, когда были обработаны только публикацию и получение HTTP -запросов, в то время как патч и удаление не были. Контроллер и страницы JSP работали отлично, пока я не сделал это обновление весны. Когда я нажимаю «Отправить» на этой странице, он должен перенести меня к методу Update Controller's Update () с помощью аннотированного requestmethod.patch. Поскольку обновление, однако, вместо этого это приводит меня к методу Create () контроллера с requestMethod.post вместо этого. Затем он ошибся, потому что он пытается добавить существующий элемент в базу данных, а не обновлять существующий. Это происходит для нескольких контроллеров. Мои текущие версии зависимости ниже. Я подтвердил, что создание стартапов Spring RequestMappingInfohandlermapping правильно отображает методы обработчика контроллера с методами HTTP. Вместо этого, кажется, что объекты httpservletrequest, отправленные на пружину, уже имеют неверные методы HTTP. Я попытался прорваться через классы Tomcat, чтобы исследовать, но я потерял, что вызывает это, не говоря уже о том, к а к е г о р а з р е ш и т ь . < c o d e > & l t ; s p r i n g . v e r s i o n & g t ; 5 . 3 . 3 9 & l t ; / s p r i n g . v e r s i o n & g t ; < b r / > & l t ; s p r i n g - b o o t . v e r s i o n & g t ; 2 . 7 . 1 8 & l t ; / s p r i n g - b o o t . v e r s i o n & g t ; < b r / > & l t ; s p r i n g - s e c u r i t y . v e r s i o n & g t ; 5 . 8 . 1 6 & l t ; / s p r i n g - s e c u r i t y . v e r s i o n & g t ; < b r / > & l t ; t o m c a t . v e r s i o n & g t ; 9 . 0 . 1 0 2 & l t ; / t o m c a t . v e r s i o n & g t ; < b r / > < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - c o r e & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; $ { s p r i n g . v e r s i o n } & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - o r m & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; $ { s p r i n g . v e r s i o n } & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - t e s t & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ; $ { s p r i n g . v e r s i o n } & l t ; / v e r s i o n & g t ; < b r / > & l t ; / d e p e n d e n c y & g t ; < b r / > & l t ; d e p e n d e n c y & g t ; < b r / > & l t ; g r o u p I d & g t ; o r g . s p r i n g f r a m e w o r k & l t ; / g r o u p I d & g t ; < b r / > & l t ; a r t i f a c t I d & g t ; s p r i n g - t x & l t ; / a r t i f a c t I d & g t ; < b r / > & l t ; v e r s i o n & g t ;${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework.boot
spring-boot
${spring-boot.version}
org.springframework.boot
spring-boot-starter-jdbc
${spring-boot.version}
org.springframework.boot
spring-boot-starter-security
${spring-boot.version}
org.springframework.boot
spring-boot-starter-test
${spring-boot.version}
test
org.springframework.boot
spring-boot-starter-web
${spring-boot.version}
org.springframework.boot
spring-boot-test
${spring-boot.version}
test
org.springframework.data
spring-data-commons
2.1.15.RELEASE
org.springframework.data
spring-data-jpa
2.1.15.RELEASE
org.springframework.security
spring-security-config
${spring-security.version}
org.springframework.security
spring-security-core
${spring-security.version}
org.springframework.security
spring-security-ldap
${spring-security.version}
org.springframework.security
spring-security-test
${spring-security.version}
test
org.springframework.security
spring-security-web
${spring-security.version}
< /code>
sub-pom1.xml
org.apache.tomcat.embed
tomcat-embed-jasper
${tomcat.version}
< /code>
sub-pom2.xml
org.apache.tomcat
tomcat-el-api
${tomcat.version}
test
org.apache.tomcat
tomcat-jasper-el
${tomcat.version}
test
< /code>
concerfiguration.java
@Configuration
@Import(CoreConfiguration.class)
@EnableAutoConfiguration
@ComponentScan("org.aurora.biorepository")
public class Configuration implements WebMvcConfigurer {
public static void main(String[] args) throws Exception {
System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "not_test");
SpringApplication.run(ApplicationConfiguration.class, args);
}
@Bean
public ServletWebServerFactory embeddedServletContainerFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
((StandardJarScanner) context.getJarScanner()).setScanManifest(false);
}
};
}
@Bean
public FilterRegistrationBean getFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(getMethodConvertingFilter());
registration.addUrlPatterns("/*");
registration.setDispatcherTypes(DispatcherType.FORWARD);
registration.setName("getMethodConvertingFilter");
return registration;
}
@Bean
public GetMethodConvertingFilter getMethodConvertingFilter() {
return new GetMethodConvertingFilter();
}
@Bean
@Autowired
public DomainClassConverter domainClassConverter(@Qualifier("mvcConversionService") ConversionService cs) {
return new DomainClassConverter(cs);
}
}
< /code>
getMethodConvertingFilter.java
public class GetMethodConvertingFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
// do nothing
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
chain.doFilter(wrapRequest((HttpServletRequest) request), response);
}
@Override
public void destroy() {
// do nothing
}
private static HttpServletRequestWrapper wrapRequest(HttpServletRequest request) {
return new HttpServletRequestWrapper(request) {
@Override
public String getMethod() {
return "GET";
}
};
}
}
< /code>
controller.java
@Controller
@RequestMapping("/home")
public class Controller {
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add(@ModelAttribute("modelAttribute") AddForm addForm, Errors errors, Model model, RedirectAttributes redirectAttributes) {
...doStuff();
return "home/add";
}
@RequestMapping(method = RequestMethod.POST)
public String create(@ModelAttribute("modelAttribute") @Valid AddForm addForm, Errors errors, Model model, RedirectAttributes redirectAttributes, javax.servlet.http.HttpServletRequest request) {
...doStuff();
}
@RequestMapping(value = "/{key}/edit", method = RequestMethod.GET)
public String edit(ModelMap model, @PathVariable String key) {
...doStuff();
return "home/edit";
}
@RequestMapping(method = RequestMethod.PATCH)
public String update(@ModelAttribute("modelAttribute") @Valid AddForm addForm, Errors errors, Model model, RedirectAttributes redirectAttributes, HttpServletRequest request) throws ObjectNotFoundException {
...doStuff();
}
}
< /code>
add.jsp
< /code>
edit.jsp
Подробнее здесь: https://stackoverflow.com/questions/795 ... -spring-bo
Spring Boot Web App обрабатывает неправильные запросы POST после обновления Spring/Spring Boot ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
WebClientRequestException при Wiremocking Spring Boot Service Post Post Post
Anonymous » » в форуме JAVA - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-
-
-
WebClientRequestException при Wiremocking Spring Boot Service Post Post Post
Anonymous » » в форуме JAVA - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-