我正在使用ServerHttpRequest作为Rest控制器中的请求参数。但是在响应中,我得到的错误是“no primary or default constructor for interface org.springframework.http.server.reactive.serverHttpRequest”。
我发现了一个类似的问题,但没有运气。
Rest控制器
@GetMapping(path = "/**") public Mono <ResponseEntity< String>> clientRequests(ServerHttpRequest request) { Mono<ResponseEntity<String>> jsonOp = restServices.getApiResponse(); return jsonOp; }
日志
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface org.springframework.http.server.reactive.ServerHttpRequest] with root cause java.lang.NoSuchMethodException: org.springframework.http.server.reactive.ServerHttpRequest.() at java.lang.Class.getConstructor0(Class.java:3082) at java.lang.Class.getDeclaredConstructor(Class.java:2178) at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:216) at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:84) at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:139) at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:126) at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:166) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> <version>${spring-boot.version}</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.projectreactor.netty</groupId> <artifactId>reactor-netty</artifactId> <version>${reactor-netty.version}</version> </dependency> </dependencies>
版本:
<spring-boot.version>2.1.4.RELEASE</spring-boot.version> <reactor-netty.version>0.8.6.RELEASE</reactor-netty.version>
正如spring boot关于WebFlux的参考文档中所解释的,添加web和WebFlux启动程序意味着spring boot将自动配置一个spring MVC应用程序。
在这种情况下无法解析此参数类型,因为spring MVC应用程序无法解析此请求类型。
我有以下代码 现在,当我去http://localhost:8080/recipe/2/update,点击提交,我调用@PostMap方法,更新后重定向我到 但是我在控制台上发现了这个错误 这个在网上 当我将@PostMap更改为@Request estMap或添加额外的@GetMaap时,一切正常 有人能解释一下吗?或者我该怎么做才能让@PostMapping按预期工作。 更新:如下面的评论所述
Spring靴2.1。打包为war的0/1应用程序不支持将作为Rest控制器中的输入参数,例如: 日志: 我有一个可以快速测试的示例项目:https://github.com/codependent/demo-webflux-springfox 在Tomcat上启动并浏览:http://localhost:8080/demo2_webflux_war/v2/api-文件 被调用的控制器是:: 您能
我的角码 你有什么想法吗?
Gson提供@Since注释来控制基于其各种版本的类的Json序列化/反序列化。 考虑以下具有版本控制支持的类。 在这个类中,我们最初定义了两个变量rollNo和name以及稍后,我们添加了verified为新变量。 使用@Since,我们已经定义了版本1.0的rollNo和name ,并验证了版本1.1。 class Student { @Since(1.0) private i
我有以下控制器代码: 问题:在Swagger中为SpecificController生成open api标记时,响应中的客户端模型是BaseClientModel,而不是SpecificClientModel,并且只有id字段,而没有id名称。 实际: 预期: 如果我有40个特定的控制器,有没有办法让springdoc开放api根据特定的通用参数生成正确的标记?
我正在编写一个RESTendpoint,它需要同时支持application/x-www-form-urlencoded和application/json作为请求体。我做了以下配置, 虽然它单独支持application/x-www-form-urlencoded或application/json(当我从consumes={}中注释掉一种内容类型时),但它不同时支持这两种类型。有什么想法吗?