Javascript 正在尝试将数据从js发布到spring引导控制器

Javascript 正在尝试将数据从js发布到spring引导控制器,javascript,java,ajax,spring-boot,post,Javascript,Java,Ajax,Spring Boot,Post,我正试图从这个js发布我的数据 $.ajax({ type: 'POST', url: '/url', data: { arr: tdValues }, success: function () { location.reload(); } }); 控制器中的所有代码工作正常,来自js的数据不为空 @PostMapping("/url")

我正试图从这个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
有什么建议可以解决这个问题吗

堆栈跟踪:

必需的字符串[]参数“arr”不存在;org.springframework.web.bind.MissingServletRequestParameterException:org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue中不存在必需的字符串[]参数“arr”(RequestParamMethodArgumentResolver.java:198)org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:109)org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)位于org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:158)位于org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)位于org.springframework.web.servlet.mvc.method.annotation.ServletineInvokableHandlerMethod.InvokeAndHandlerMethod位于org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)的org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)org.springframework.web.servlet.DispatcherServlet.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.springframeworkServlet.web.servlet.FrameworkServlet.java:846处javax.servlet.http.HttpServlet.service(HttpServlet.java:742)org.apache.catalina.core.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.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)org.springframework.security.web.FilterChainProxy$virtualfilterchainproxy.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位于org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)的org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)位于org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)位于org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)在org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)在org.springframework.security.web.authentication.rememberme.rememberAuthenticationFilter.doFilter(rememberAuthenticationFilter.java:158)在org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter位于org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)的FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)位于org.springframework.security.web.savedrequest.RequestCacheAwarRefilter.doFilter(RequestCacheAwarRefilter.java:63),位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331),位于org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)位于org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)位于org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter位于org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)的org.springframework.security.web.FilterChainProxy$virtualfilter.doFilter(FilterChainProxy.java:331)org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.context.request.async.WebAsyncManagerInternal.doFilterInternalorg.springframework.security.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)org.springframework.security.web.FilterChainProxy
public ModelAndView deleteQuestions(@RequestParam(required=false, value = "arr[]") String[] tdValues) {
public ModelAndView deleteQuestions(@RequestParam(value = "arr") String[] tdValues) {
$.ajax({
    type: 'POST',
    url: '/url/?arr='+tdValues
    success: function () {
        location.reload();
    }
});  
public ModelAndView deleteQuestions(@RequestParam(value = "arr") String[] tdValues) {
public @ResponseBody ModelAndView deleteQuestions(@RequestParam("arr") Optional<String[]> tdValues) {}
$.ajax({
        type: 'POST',
        url: '/url?arr='+tdValues,
        error : function() {
            console.log("error");
        },
        success: function () {
            location.reload()
        }
    });