0

@POSTアノテーションを付けたRestEasyを使用して、2つの複雑なオブジェクトをパラメーターとして転送しようとしています。

@POST
@Path("/save")
@Consumes("application/json")
public void save(ComplexeObjectAleph objectAleph, ComplexeObjectBeth objectBeth);

パラメータが1つしかない場合は問題ありませんが、パラメータが2つある場合は例外が発生します。

Caused by: java.io.EOFException: No content to map to Object due to end of input
    at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2775)
    at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2691)
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315)
    at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)
    at org.jboss.resteasy.core.interception.MessageBodyReaderContextImpl.proceed(MessageBodyReaderContextImpl.java:105)
    at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.read(GZIPDecodingInterceptor.java:63)
    at org.jboss.resteasy.core.interception.MessageBodyReaderContextImpl.proceed(MessageBodyReaderContextImpl.java:108)
    at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:169)
    at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:136)
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:159)
    at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257)
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222)
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211)
    at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542)
    ... 22 more

例:https ://github.com/markstein/de.mosst/tree/master/PlayareaRestEasy

4

1 に答える 1

0

それは可能ですが、注意が必要です。

2つのパラメータには。で注釈を付ける必要があります@Form

@Path("playarea")
public interface PlayareaRsInterface {

    @POST
    @Path("save")
    @Produces(MediaType.APPLICATION_JSON)
    public void save(@Form ComplexeObjectAleph objectAleph, @Form ComplexeObjectBeth objectBeth);

}

また、2つのクラスの属性には@FormParam(...)注釈が必要です。

public class ComplexeObjectAleph {

    @FormParam("aleph")
    public String aleph;

}

public class ComplexeObjectBeth {

    @FormParam("beth")
    public String beth;

}

ただし、の値は@FormParam(...)等しくない必要があることに注意してください。等しくない場合、RestEasyはデータを正しく解析できません。それがRestEasyのバグかもしれません。

于 2013-03-27T09:37:33.837 に答える