我正在尝试将公司与特定的人相关联,因此我决定在我的函数中添加一个参数(负责创建公司的功能)。这是代码:
@POST
public Response create(Long idPerson, CompanyDTO company , @Context UriInfo uriInfo) {
if(company == null)
throw ...
if(idPerson == null)
throw ...
CompanyDTO companyUsed = company;
PersonDTO person =
this.servicePerson.searchPersonById(idPerson);
companyUsed.setPerson(person);
Long idCompany =
this.service.saveCompany(companyUsed); //serviceCompany
if(idCompany == null)
throw ...
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
builder.path(Long.toString(idCompany));
return Response.created(builder.build()).build();
}
如果我不在参数中使用 idPerson ,那么效果很好,但我在代码中指定了静态 idPerson 。
public Response create(CompanyDTO company , @Context UriInfo uriInfo) {
...
PersonDTO person =
this.servicePerson.searchPersonById(1L); // I specify it here statically
... }
所以这里有问题我想在我的参数中添加 idPerson 。如果我这样做,我得到500错误。这是我的例外的一部分:
com.sun.jersey.spi.container.ContainerResponse.mapMappableContainerException
The exception contained within MappableContainerException could not be
mapped to a response, re-throwing to the HTTP container
org.codehaus.jackson.map.JsonMappingException: Can not deserialize
instance of java.lang.Long out of START_OBJECT token
答案 0 :(得分:0)
人员标识符可以定义为路径参数(它将成为URL的一部分):
@POST
@Path("{idPerson}")
public Response create(@PathParam("idPerson") Long idPerson,
@Context UriInfo uriInfo, CompanyDTO company,) {
...
}