多API不泽西弹簧引导工作

问题描述 投票:2回答:2

我使用的春天开机+球衣在我的应用程序。而我使用的嵌入式的tomcat。下面是一个API的定义。

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response createNewBadge(@FormDataParam("name") String name,
                               @DefaultValue("0") @FormDataParam("grade") int grade,
                               @DefaultValue("0") @FormDataParam("point") int point,
                               @FormDataParam("file") InputStream fileInputStream,
                               @FormDataParam("file") FormDataContentDisposition disposition) {
    ...
}

当我启动应用程序和访问由该API提供的路径,我会得到下面的错误。难道我在这里错过了什么?

WARNING: No injection source found for a parameter of type public javax.ws.rs.core.Response com.ct.api.BadgeAPI.createNewBadge(java.lang.String,int,int,java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition) at index 0.

2016-02-26 13:42:14.457 ERROR 35414 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : StandardWrapper.Throwable

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response com.ct.api.BadgeAPI.createNewBadge(java.lang.String,int,int,java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition) at index 0.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/json], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class com.ct.api.BadgeAPI, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@22393b97]}, definitionMethod=public javax.ws.rs.core.Response com.ct.api.BadgeAPI.createNewBadge(java.lang.String,int,int,java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition), parameters=[Parameter [type=class java.lang.String, source=name, defaultValue=null], Parameter [type=int, source=grade, defaultValue=0], Parameter [type=int, source=point, defaultValue=0], Parameter [type=class java.io.InputStream, source=file, defaultValue=null], Parameter [type=class org.glassfish.jersey.media.multipart.FormDataContentDisposition, source=file, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:555) ~[jersey-server-2.22.1.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184) ~[jersey-server-2.22.1.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350) ~[jersey-server-2.22.1.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347) ~[jersey-server-2.22.1.jar:na]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[jersey-common-2.22.1.jar:na]
spring rest jersey multipart
2个回答
2
投票

随着春天的引导,支持2.15版球衣。请更改多球衣依赖的版本。


1
投票

一些搜索后,我想通了的根本原因。我需要在球衣配置寄存器MultiPartFeature类象下面这样:

@Configuration
public class JerseyConfiguration extends ResourceConfig {
  public JerseyConfiguration(){
    register(MultiPartFeature.class);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.