【发布时间】:2021-12-17 04:47:36
【问题描述】:
我想将 我的 DTO 中的 UUID 转移到我的资源方法。
我的方法:
@POST
@Path(("/upload"))
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response sendMultipartData(@MultipartForm MultipartBodyRequestDto data) {
// Do stuff [...]
return Response.ok().entity(responseDto).build();
}
我的 DTO:
public class MultipartBodyRequestDto {
// Other properties [...]
@NotNull
@FormParam("file")
@PartType(MediaType.APPLICATION_OCTET_STREAM)
public InputStream file;
@NotNull
@FormParam("id")
@PartType(MediaType.TEXT_PLAIN) // <-- What do I have to select here ?
public UUID id;
}
我收到此错误:
“RESTEASY007545:找不到媒体类型的 MessageBodyReader:text/plain;charset=UTF-8 和类类型 java.util.UUID”
在切换到String和@PartType(MediaType.TEXT_PLAIN)的时候,它可以工作,但是我必须自己转换id。
Resteasy 应该能够转换它,毕竟我在其他端点中使用 UUID,如下所示:
@GET
@Path("/{id}")
public Response get(@PathParam("id") @NotNull UUID id) {
// Do stuff [...]
}
我必须实现特定的 MessageBodyReader 吗?
【问题讨论】:
-
UUID 是否有理由用 XML 表示?这对我来说似乎很奇怪。
-
没有。这是一个测试,我发现了这个例子,他们将 XML 用于自定义对象:docs.jboss.org/resteasy/docs/4.5.6.Final/userguide/html/…
标签: rest multipartform-data resteasy quarkus