我正在尝试将请求中的空值转换为空值。看来StringTrimmerEditor
应该这样做,但我陷入了对请求对象进行的验证。
我正在使用javax.validation.2.0.1.Final
来验证请求,并尝试在Controller的StringTimmerEditor
中使用initBinder
。
在控制器中我添加了以下内容:
@InitBinder
public void dataBinding(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
我在服务中有这个:
public RealEstateUpdateResponse update(@Valid @RequestBody RealEstateUpdateRequest realEstateRequest) throws ServiceException {
return realEstateBusinessObject.update(realEstateRequest);
}
这在请求模型中(请注意,我在此属性中没有@NotNull批注):
@Size(min=5, max=200, message="0004")
@JsonProperty(value="street")
@ApiModelProperty(name="street",
example="St. 3700",
value="The real estate street address")
private String street;
但是当我发送请求正文时:
"street" : "",
然后我得到:
2019-04-15 17:47:34 ERROR ServiceExceptionHandler:49 - Validation failed for argument at index 0 in method: xxx) throws br.com.ph.ume.exception.ServiceException, with 1 error(s): [Field error in object 'xxx' on field 'street': rejected value []; codes [Size.realEstateUpdateRequest.street,Size.street,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [realEstateUpdateRequest.street,street]; arguments []; default message [street],200,5]; default message [0004]]
如果我发送: “ street”:null或根本不在请求正文中发送“ street”,那么验证就可以了
我希望当我发送“ street”:“”时,它将转换为null并通过验证。