【发布时间】:2019-01-03 04:52:39
【问题描述】:
Spring @RequestBody 注解自动将 JSON 请求正文转换为 Object。转换过程对我们来说似乎是一个黑匣子。但是,我需要控制转换过程以使我预期的无效输入失败。
看看下面的代码。 JSON 请求正文包含一个带有大写字母的“id”字符串。当 Spring 自动将其转换为 UUID 对象时,就会成功。
// the controller
public class IndexController {
...
public ResponseEntity<Void> postIndexes(@ApiParam(value = INDEXES_DESC, required = true) @Valid @RequestBody @Size(min = 1, max = 2000) List<Index> indexes) {
...
}
...
}
// the Index class
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Index implements Serializable {
@ApiModelProperty(value = ID_DESC, example = SINGLE_ID)
@NotNull
private UUID id;
...
}
// the input JSON request body
[
{
...
"id": "40336c2b-591a-4472-a270-111111A46339",
...
}
]
但是,我希望这种带有大写字母的输入失败。不确定 @RequestBody 注释有什么神奇的作用。看起来它使用 UUID.fromString() 将字符串输入转换为 UUID 对象。但我想对转换过程进行一些控制以使其失败。
【问题讨论】:
-
您可以使用
ObjectMapper进行转换 -
@MaruthiAdithya 问题是 ObjectMapper 超出了我的控制范围。它是 Spring 中黑匣子中的东西。能否举例说明一下如何在春季控制它?
标签: java spring annotations