2015-02-01 2 views
7

Я пытаюсь следовать Джерси документы для того, чтобы не-ответ 200, если произошла ошибка (https://jersey.java.net/documentation/latest/representations.html#d0e3586)Джерси MessageBodyWriter не найдено для типа носителя = текст/простой

Мой код выглядит следующим образом:

@POST 
@Produces(MediaType.TEXT_PLAIN) 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public ResponseBuilder getData(@FormParam("one") String one,@FormParam("two") String two,@FormParam("three") String three) { 
    if(one.isEmpty() || two.isEmpty() || three.isEmpty()) { 
     logger.error("Missing params for getData"); 
     throw new WebApplicationException(501); 
    } 
    return Response.ok(); 
} 
} 

к сожалению, это дает следующее сообщение об ошибке:

[2015-02-01T16: 13: 02,157 + 0000] [GlassFish 4.1] [СУРОВОЙ] [] [org.glassfish.jersey.message.internal.WriterInterceptorExecutor ] [tid: _ThreadID = 27 _ThreadName = http-listener-1 (2)] [timeMillis: 1422807182157] [levelValue: 1000] [[ MessageBodyWriter не найден для носителя type = text/plain, type = class org.glassfish.jersey.message.internal.OutboundJaxrsResponse $ Builder , genericType = class javax.ws.rs.core.Response $ ResponseBuilder.]]

ответ

6

Проблема заключается в обратном типе вашего метода. Это должно быть Response вместо ResponseBuilder.

Изменить код на следующий и он должен работать:

@POST 
@Produces(MediaType.TEXT_PLAIN) 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
public Response getData(@FormParam("one") String one,@FormParam("two") String two,@FormParam("three") String three) { 
    if(one.isEmpty() || two.isEmpty() || three.isEmpty()) { 
     logger.error("Missing params for getData"); 
     throw new WebApplicationException(501); 
    } 
    return Response.ok(); 
} 
+0

О, я сейчас чувствую себя так глупо! –

+0

В случае, если это не поможет. Я возвращаю ответ. –

Смежные вопросы