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