我有以下 JAX-RS 资源:
@POST
public Response createPerson(final User 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
,但如果使用另一种带注释的方法,我可以扩展它。
当然,我可以将代码与 Swagger 特定的注释一起使用,但这会导致重复。我宁愿使用相同的元信息来获取应用程序逻辑和文档。我可以接受自定义注释,同时扩展 Jersey 和 Swagger。
您可以直接在类定义中或在无参数构造函数中设置默认值,所有这些都在普通的旧 java 中,不需要任何注释。当使用原始类型而不是包装器时,active 将默认为 false。
举个例子:
public static class User {
public boolean primActive;
public Boolean wrapActive;
public boolean consActive;
public User() {
consActive = true;
}
}
资源:
@POST
@Path("foo")
public User getUser( User user ) {
return user;
}
发布空请求时(使用json时:
{}
),返回以下内容。
{
primActive: false
consActive: true
}