我有一个 JAX-RS 服务,可以处理多部分
PUT
操作,并使用 @RestForm
注释映射请求对象。 @RestForm
中的所有参数都已正确序列化/反序列化,并且我可以看到它们出现在我的 JAX-RS 端点方法中。 但是,当我向表单添加一个 Enum
属性时,它似乎没有正确映射。 当我 PUT
设置了此 Enum
值的请求时,我的 JAX-RS 端点将该值视为 null
。
我的表格非常简单,看起来像这样:
public class MyEnumForm {
@RestForm("paramA")
private String paramA = null;
@RestForm("paramB")
private String paramB = null;
@RestForm("enumParam")
private MyEnumType enumParam = null;
...snip...
}
我的 JAX-RS 端点方法看起来像这样......
@Path("/myendpoint")
@PUT
@Consumes({ MediaType.MULTIPART_FORM_DATA })
public Response testPut(@MultipartForm MyEnumForm) {
...snip...
}
我是否缺少表单类中
enum
的注释? 在这种情况下,我必须对 enum
类型做一些特别的事情吗?
解决了! 问题是我的
enum
需要一个公共静态 fromString(String)
方法来将提供的 String
值转换为 Enum
实例。 添加后,RestEasy 会正确转换它。