Кодировка символов Джерси / Отдых по умолчанию

учитывая, что вы новичок, я бы сказал, не пытайтесь это сделать. это определенно возможно, но бесполезно усложнит ваш Makefile. придерживайтесь простых способов, пока вам не станет удобнее делать.

, который сказал, один из способов создания в каталоге, отличном от исходного каталога, - VPATH ; Я предпочитаю правила шаблона

16
задан Mike Mitterer 1 April 2011 в 13:29
поделиться

1 ответ

У меня была та же проблема: мне не нравится добавлять кодировку в тэг "@Produces" везде.

Я нашел решение прямо здесь: http://stephen.genoprime.com/2011/05/29/jersey-charset-in-content-type.html

В основном вам просто нужно добавить фильтр ответов, который добавит кодировку (например, если тип содержимого, возвращаемый в данный момент - text, xml или json)

import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;

import javax.ws.rs.core.MediaType;

public class CharsetResponseFilter implements ContainerResponseFilter {

    public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {

        MediaType contentType = response.getMediaType();
        response.getHttpHeaders().putSingle("Content-Type", contentType.toString() + ";charset=UTF-8");

        return response;
    }
}

И зарегистрировать фильтр:

ServletAdapter jerseyAdapter = new ServletAdapter();
jerseyAdapter.addInitParameter("com.sun.jersey.spi.container.ContainerResponseFilters", "com.my.package.MyResponseFilter"); 

Работает тоже с Guice, конечно, например, в вашем классе, расширяющем ServletModule:

final Map<String, String> parameters = new HashMap<String, String>();
parameters.put("com.sun.jersey.spi.container.ContainerResponseFilters", com.package.JerseyCharsetResponseFilter.class.getName());
serve("/*").with(GuiceContainer.class, parameters);
7
ответ дан SRG 1 April 2011 в 13:29
поделиться
Другие вопросы по тегам:

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