Java JAX-RS POST bean属性的默认值

Java JAX-RS POST bean属性的默认值,java,jersey,jax-rs,jersey-2.0,swagger,Java,Jersey,Jax Rs,Jersey 2.0,Swagger,我有以下JAX-RS资源: @POST public Response createPerson( final User user) { ... } @POST @Path("foo") public User getUser( User user ) { return user; } 用户bean是: public class User { protected String lastName; protected String

我有以下JAX-RS资源:

@POST
public Response createPerson(
                final User user) {
    ...
}
@POST
@Path("foo")
public User getUser( User user ) {
    return user;
}
用户bean是:

public class User {
    protected String lastName;
    protected String role;
    @DefaultValue("true")
    protected Boolean active;
    @DefaultValue("dd.MM.yyyy")
    protected String dateFormat;
...//getters and setters
}
当我没有为“active”和“dateFormat”指定值时,我希望用默认值填充它们。但它们是空的

我已经阅读了
@DefaultValue
的文档,它似乎不适合我的场景。但我怎么能要求泽西岛填补这些缺失的财产违约

编辑: 我希望使用注释而不是代码(例如,在构造函数中),因为我希望能够自动生成API文档(例如,swagger)。Swagger在提供参数信息时已经支持
@DefaultValue
,但如果使用另一种带有注释的方法,我可以扩展它


当然,我可以将代码与特定于招摇过市的注释一起使用,但这会导致重复。我宁愿使用相同的元信息来获取应用程序逻辑和文档。在扩展jersey和swagger时,我可以使用自定义注释。

您可以直接在类定义中或在无参数构造函数中设置默认值,所有这些都是纯旧java,不需要任何注释。当使用原语类型而不是包装器时,active将默认为false

举个例子:

public static class User {
    public boolean primActive;
    public Boolean wrapActive;
    public boolean consActive;

    public User() {
        consActive = true;
    }
}
资源:

@POST
public Response createPerson(
                final User user) {
    ...
}
@POST
@Path("foo")
public User getUser( User user ) {
    return user;
}
发布空请求时(使用json:
{}
),将返回以下内容

{
    primActive: false
    consActive: true
}

谢谢,你的回答完全解决了我最初描述的问题。但我需要带注释的解决方案,以便在生成API文档时使用这些信息(请参阅我的编辑)