我正试图从这个js发布我的数据
$.ajax({
type: 'POST',
url: '/url',
data: {
arr: tdValues
},
success: function () {
location.reload();
}
});
控制器中的所有代码都可以正常工作,来自js的数据不是空的
@PostMapping("/url")
public ModelAndView deleteQuestions(@RequestParam(value = "arr[]") String[] tdValues) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("page");
return modelAndView;
}
但在那之后,我得到了例外
Required String[] parameter 'arr[]' is not present
有任何建议如何解决?
堆栈跟踪:
必需String []参数'arr'不存在; org.springframework.web.bind.MissingServletRequestParameterException:必需String []参数'arr'不存在于org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver) .java:198)atg.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:109)org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)at org . springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:158)位于org.springframework.web.servlet.mvc的org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128) . org.s的method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) pringframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)at org . springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)位于org.springframework.web.servlet.DispatcherServlet的org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) . doService(DispatcherServlet.java:901)在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)在org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)在的javax.servlet .http.HttpServlet.service(HttpServlet.java:661)在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)在javax.servlet.http.HttpServlet.service(HttpServlet.java:742)在org.apache.catalina.co re.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java: 52)在在org.springframework.security.web.FilterChainProxy在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)) $ VirtualFilterChain.doFilter(FilterChainProxy.java:317)在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:91)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)在org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFil ter.java:114)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)at org位于org.springframework.security.web.FilterChainProxy的org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)中的.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)位于org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy)的org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:158)上的$ VirtualFilterChain.doFilter(FilterChainProxy.java:331) .java:331)在org.springframework.s的org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) ecurity.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain . 在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)的org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)中的doFilter(FilterChainProxy.java:331)在org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)atorg.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)在org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)在org.springframework.web.filter . org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)中的OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 105)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)at org .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java: 331)在org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)在org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)在org.springframework.web.filter.DelegatingFilterProxy .invokeDelegate(DelegatingFilterProxy.java:347)在org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在有机apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter . 的java:107)处org.springframework.w在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)) eb.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java)的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 193)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)at org.springframework.web.filter.OncePerRequestFilter .doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)在有机springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.co re.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)在org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:140)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)在org.apache . catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)在org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.j AVA:868)在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1459)在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)是java .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:624)在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61)在java.lang.Thread.run(Thread.java:748)
3 回答
将所需属性(设置为false)添加到@RequestParam .
或者试试
几个变化 .
用这种方式解决了我的问题:
和