Как получить имя поля в случае неустранимой ошибки в CXF? - PullRequest
1 голос
/ 06 мая 2011

Предварительное условие : служба на основе CXF получает запрос / ответ с данными, что нарушает ограничение XSD.

Фактическое поведение : В этом случае CXF возвращает ошибку с сообщениемнапример:

cvc-maxLength-valid: значение 'string_length_violated_value' с length = '28' не является действительным по отношению к maxLength '13' для типа 'XSDStringTypeWithLengthRestriction'

Цель : вернуть ошибку потребителю с именем поля, содержащего недопустимые данные.Примерно так:

Ответ от провайдера содержит недопустимые данные.Значение 'string_length_violated_value' поля 'field_name' недопустимо по отношению к maxLength '13'.

Мне интересно, возможно ли это, и если да, то как определить (гдеизвлечь из) это имя поля?

1 Ответ

2 голосов
/ 06 мая 2011

Я не уверен, что это будет работать полностью, но вы можете попробовать:

Вы можете создать JAXB ValidationEventHandler и зарегистрировать его на своей конечной точке.

Получаемое им ValidationEvent содержит базовую строку (которую вы видите выше) и другую информацию.Я бы поставил точку останова и покопался в событии, чтобы узнать, доступна ли ЛЮБАЯ дополнительная и полезная информация.

...