Как установить набор символов с JAX-RS?

Как я могу установить набор символов с JAX-RS? Я попробовал @Produces("text/html; charset=UTF-8") но это было проигнорировано и только text/html был отправляют с HTTP-заголовком. Я хочу установить набор символов в MessageBodyWriter, но не хочу извлекать тип среды путем анализа @Produces аннотации через отражение один.

50
задан deamon 7 August 2010 в 09:52
поделиться

1 ответ

Если вы хотите сделать это нейтральным способом реализации JAX-RS, вы можете сбросить Content-Type в MessageBodyWriter. Что-то вроде:

public void writeTo(Object obj,
                    Class<?> cls,
                    Type type,
                    Annotation[] annotations,
                    MediaType mt,
                    MultivaluedMap<String, Object> responseHttpHeaders,
                    OutputStream stream) throws IOException {
    responseHttpHeaders.putSingle(javax.ws.rs.core.HttpHeaders.CONTENT_TYPE, mt.toString() + ";charset=UTF-8");
}

Если у вас есть разные наборы символов, помимо UTF-8 для каждого метода ресурса, вы можете создать собственную аннотацию и добавить ее к каждому методу ресурса. Затем попробуйте использовать параметр аннотации в методе writeTo ().

К вашему сведению, Apache Wink поддерживает использование кодировки и других атрибутов в типах мультимедиа. Я надеюсь, что будущие изменения спецификации JAX-RS сделают это проще.

10
ответ дан 7 November 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: