initBinder на контроллере не преобразует пустые значения в ноль - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь преобразовать пустые значения из запроса в нулевые значения. Кажется, что 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]]

Если я отправлю: "улица": пусто или вообще не отправлять "улицу" в теле запроса, тогда проверка происходит просто отлично

Я ожидаю, что когда я отправлю "улицу": "", он преобразует ее в ноль и пройдет проверку.

...