Я пытаюсь преобразовать пустые значения из запроса в нулевые значения. Кажется, что StringTrimmerEditor
должен сделать это, но я застрял в проверке, сделанной на объекте запроса.
Я использую javax.validation.2.0.1.Final
для проверки запросов и пытаюсь использовать 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]]
Если я отправлю:
"улица": пусто или вообще не отправлять "улицу" в теле запроса, тогда проверка происходит просто отлично
Я ожидаю, что когда я отправлю "улицу": "", он преобразует ее в ноль и пройдет проверку.