Bean Игнорирование дополнительных значений в теле запроса

Вот мой код контроллера:

@RequestMapping(value = "/accountholders/{cardHolderId}/cards/{cardId}", produces = "application/json; charset=utf-8", consumes = "application/json", method = RequestMethod.PUT)
@ResponseBody
public CardVO putCard(@PathVariable("cardHolderId") final String cardHolderId,
        @PathVariable("cardId") final String cardId, @Valid @RequestBody final RequestVO requestVO,
        @RequestParam final Map<String, String> allRequestParams) {
    iCardService.updateCardInfo(cardId, requestVO.getActive());
    return iCardService.getCardHolderCardInfo(cardHolderId, cardId);

}

Это мой запрос Bean: -

public class RequestVO {
    @NotNull
    private Boolean active;

    public Boolean getActive() {
        return active;
    }

    public void setActive(Boolean active) {
        this.active = active;
    }

Тело моего запроса: -

{
    "active":true,
    "abc":"ignoring this"
}

Проблема, с которой я сталкиваюсь, заключается в том, что я отправил дополнительный параметр в тело запроса. Кажется, что в этом случае игнорируется дополнительное значение «abc». Код работает и дает мне ответ. Мне нужно выдать 400 BAD REQUEST.

Я что-то упустил или это способ сказать, чтобы он выдавал исключение при передаче дополнительного параметра.


person Grinish Nepal    schedule 11.02.2016    source источник
comment
Какую структуру сопоставления json вы используете внутри?   -  person Ralph    schedule 12.02.2016
comment
Для этого я ничего не использую. Я просто напрямую сопоставляю JSON с Bean, аннотация @RequestBody делает это за меня. Spring может использовать что-то внутри.   -  person Grinish Nepal    schedule 12.02.2016
comment
Так что скорее всего Джексон 2/Быстрее XML   -  person Ralph    schedule 12.02.2016


Ответы (1)


Попробуй это:

@JsonIgnoreProperties(ignoreUnknown = false)
public class RequestVO {
    @NotNull
    private Boolean active;

    public Boolean getActive() {
        return active;
    }

    public void setActive(Boolean active) {
        this.active = active;
    }
}
person Abhishek Garg    schedule 11.02.2016
comment
Подсказка: для глобальной конфигурации взгляните на этот ответ: stackoverflow.com/a/14343479/280244 - person Ralph; 12.02.2016
comment
я попробовал решение, но я все еще получаю ответ. я импортировал com.fasterxml.jackson.annotation.JsonIgnoreProperties. все тот же результат. - person Grinish Nepal; 12.02.2016