ExceptionMapper отображает исключение в ответ, и ответ затем обрабатывается, как если бы он был возвращен методом ресурса.Из этого следует, что если ответ возвращает бин как его сущность, а не тип носителя, алгоритм в разделе 3.8 спецификации JAX-RS вступит в силу.
Таким образом, вы можете сделать следующее:
- Определить компонент (или использовать сам тип исключения в качестве компонента)
- Определить MBW дляbean-компонент для типов медиа, которые вы хотите вернуть (text / html, application / json, text / plain)
- ExceptionMapper возвращает ответ, содержащий экземпляр bean-компонента (но без медиа-типа)
Среда выполнения JAX-RS будет затем использовать заголовок Accept для получения правильного ответа (т. Е. Выбрать ваш MessageBodyWritter для получения ответа).
Если дополнительная информация из запроса по-прежнему требуется в самом преобразователе, единственноеРешение, которое я вижу, состоит в том, чтобы создать собственное исключение, внедрить Request в свой класс ресурсов и включить ссылку на запрос в исключении, которое вы выбросили.
Надеюсь, это поможет.
- Сантьяго