2010-09-09 8 views
3

Джерси идентифицирует запросы, просматривая заголовок accept. У меня есть запрос, который принимает только текст/* - Как я могу заставить ответ быть например application/json?JAX-RS Джерси - Как заставить ответ ContentType? Перезаписать согласование содержимого

@POST 
@Path("/create") 
@Produces(MediaType.APPLICATION_JSON) 
public MyResponseObject create() { 
    return new MyResponseObject(); 
} 

Если запрос направлен на создание, которое принимает только текст/* джерси будет возвращать 500. Есть ли способ обойти эту проблему? (Я не могу изменить заголовок принятия запроса).

ответ

5

Джерси также поддерживает это с помощью ResourceConfig собственности PROPERTY_MEDIA_TYPE_MAPPINGS, что вы можете настроить в вашем web.xml или программно через Джерси API, как показано ниже:

DefaultResourceConfig rc = new DefaultResourceConfig(MyResource.class); 
rc.getMediaTypeMappings().put("json", MediaType.APPLICATION_JSON_TYPE); 
rc.getMediaTypeMappings().put("xml", MediaType.APPLICATION_XML_TYPE); 
SimpleServerFactory.create("http://localhost:9090", rc); 

Вы можете форсировать согласование типа контента путем суффикса либо .json, либо .xml на ваш URL.