【发布时间】:2019-08-05 10:03:56
【问题描述】:
我有一个 POJO UserRequest,其中一些字段具有默认值:
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class UserRequest {
String username;
@Builder.Default
String source = "app";
@Builder.Default
Locale locale = Locale.US;
}
和控制器以 POJO 作为 GET 请求参数:
@GetMapping("/getDescription")
public List<String> getDescription(UserRequest userRequest,
@RequestParam(value = "descriptionType" , defaultValue = "DEFAULT") DescriptionType descriptionType {
return Something.process(userRequest, descriptionType);
}
我的请求参数正确转换为userRequest 对象。
我的问题是,当参数不存在时,默认值不会进入userRequest 对象。它们仍然为空。
例如我的要求
host/getDescription?username=test_username&source=app&locale=en_US,完全填充userRequest对象host/getDescription?username=test_username,具有userRequest对象的字段源和区域设置为空。
根据我的理解,当请求中缺少参数时,它应该遵循默认值。
我错过了什么?有没有办法让它工作而无需在设置器中手动执行此操作?
这是我迄今为止尝试过的:
- 我猜 Spring 使用 Jackson 来做转换,所以我尝试添加
@JsonInclude(JsonInclude.Include.NON_NULL) - 我尝试将
@ModelAttribute添加到控制器参数中。
【问题讨论】:
标签: java spring rest serialization