找到解决办法,顺便记录一下,希望能帮到有类似问题的人
如图所示
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or single public constructor found for interface java.util.List - and no default constructor found either] with root cause
java.lang.IllegalStateException: No primary or single public constructor found for interface java.util.List - and no default constructor found either
本来是java.lang.IllegalArgumentException: Invalid character found in the request target [/deleteShoucang?a[0][post_url]=1&a[1][post_url]=2 ]. The valid characters are defined in RFC 7230 and RFC 3986 这个问题
解决起来很简单,不需要什么@什么的
首先是tomcat7.0以上传不了list,就是上面的问题,解决是创建一个类,内容是
import org.apache.catalina.connector.Connector;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TomcatConfig {
@Bean
public TomcatServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers((Connector connector) -> {
connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
});
return factory;
}
}
然后再创建一个vo类,就一个参数,LIst list,然后get,set那一揽子方法,这个类的名字是listList,那么接受参数的时候方法体是
public String test(listList list)
import java.util.List;
public class listList {
List list;
public listList() {
super();
}
@Override
public String toString() {
return "listList{" +
"list=" + list +
'}';
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public listList(List list) {
this.list = list;
}
}
@RestController
public class testController {
@PostMapping("/test")
public String test(listList list){
System.out.println(list);
return "ok";
}
}