Jersey ModelValidationException - 未找到注入源

tan*_*nou 8 java jax-rs jersey

我有一个奇怪的问题,我绝对不明白,使用Jersey 2.6.

我无法解释原因,但其中一个查询参数使得jersey抛出一个ModelValidationException

    @ApiOperation("Save")
    @PUT
    public Response save(
            @HeaderParam("token") final String token,
            @QueryParam("someValue") final SomeValueDTO someValue,
            @QueryParam("anotherParam") final int anotherParam) throws TechnicalException {

        return Response.ok().build();
    }
Run Code Online (Sandbox Code Playgroud)

queryParam'ometValue'使jersey throw:

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 ch.rodano.studies.api.resources.PagesResource.save(java.lang.String,ch.rodano.studies.api.dto.JSONValueDTO,int) throws ch.rodano.studies.exceptions.RightException,ch.rodano.studies.configuration.exceptions.NoNodeException at index 1.; source='ResourceMethod{httpMethod=PUT, consumedTypes=[], producedTypes=[application/json], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class ch.rodano.studies.api.resources.PagesResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@41ed3918]}, definitionMethod=public javax.ws.rs.core.Response ch.rodano.studies.api.resources.PagesResource.save(java.lang.String,ch.rodano.studies.api.dto.JSONValueDTO,int) throws ch.rodano.studies.exceptions.RightException,ch.rodano.studies.configuration.exceptions.NoNodeException, parameters=[Parameter [type=class java.lang.String, source=token, defaultValue=null], Parameter [type=class ch.rodano.studies.api.dto.JSONValueDTO, source=valuesASD, defaultValue=null], Parameter [type=int, source=visitPk, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
Run Code Online (Sandbox Code Playgroud)

如果我使用String而不是SomeValueDTO一切都没问题.SomeValueDTO是一个非常经典的POJO,带有空构造函数和getter/setter.

如果有人有idiea !!

Pau*_*tha 10

SomeValueDTO需要转换.完成此任务的选项:

  1. valueOf(String param)返回类型的公共静态
  2. fromString(String param)返回类型的公共静态
  3. 或者是接受String的公共构造函数
  4. 实施一个ParamConverter.你可以在这里看到一个例子

在前三种情况中的任何一种情况下,您都需要通过在构造函数中或在上述方法之一中解析String来相应地构造实例.