Jersey @PathParam: содержит несколько параметров без аннотаций.

Ниже приведена моя подпись метода, которую я использую в Джерси, когда я отлаживаю/запускаю программу, я получаю сообщение об ошибке:

[[FATAL] Публичный метод javax.ws.rs.core.Response com.xxxx.xxxxx.Xxxxx.xxxxx.xxxxxxxx(java.lang.String,java.lang.String,java.lang.String,javax.ws.rs .container.ContainerRequestContext) в классе ресурсов com.xxxxxx.xxxxx.xxxxxx.xxxxxx содержит несколько параметров без аннотаций.

Мой код:

@PUT
@Path("/user/{user}/{role}")
@Consumes({MediaType.APPLICATION_JSON,MediaType.TEXT_PLAIN})
@Produces("application/json")

public Response myFunction(@PathParam("user") String user,
    @PathParam("role") String role,
    String rawData,
    @Context ContainerRequestContext crc) {

}

Что я делаю неправильно здесь.

Спасибо


person Shivkumar Mallesappa    schedule 01.09.2016    source источник


Ответы (1)


arrow_upward
1
arrow_downward

Изменить: этот ответ помог мне решить мою ошибку, но, как упомянул Кассио Маццоки Молин в комментарии ниже: он вам не поможет (и документация предназначена для неправильной версии Джерси..). Полный промах с моей стороны.

Пожалуйста, извините мою попытку помочь вам. Надеюсь, вы уже исправили свою ошибку :)

Ахой там!

Я действительно новичок в REST (так что возьмите мой ответ с ведром травяной соли), но я думаю, что знаю, откуда исходит ваша ошибка.

Вы должны связать свой параметр rawData.

Пример: @PathParam("rawdata") String rawData или @HeaderParam("rawdata") String rawData

В зависимости от того, откуда вы хотите извлечь параметр, вы должны написать @аннотацию к параметру.

Вы можете извлечь следующие типы параметров для использования в вашем классе ресурсов:

  • Запрос
  • URI
  • Дорожка
  • Форма
  • Куки
  • Заголовок
  • Матрица

Текст выше взят из ссылки: http://docs.oracle.com/javaee/6/tutorial/doc/gilik.html Вы должны взглянуть и немного прочитать об этом, если вы еще этого не сделали :)

person Karl Evald Wigestrand    schedule 17.10.2016
comment
1. Я не думаю, что эта часть верна: Вы должны привязать ваш параметр rawData. Метод имеет аннотацию @PUT, поэтому rawData следует отправлять в полезной нагрузке запроса, а аннотация @___Param не требуется. 2. Джерси 2.x (см. тег в вопросе) является частью Java EE 7, а предоставленная вами ссылка относится к Java EE 6. Однако в документации нет ошибок. - person cassiomolin; 17.10.2016
comment
Спасибо, что поправили меня. У меня была такая же проблема (но с @GET), и это решило мою проблему. И я не знал, что может быть разница между @GETи @PUT. Может быть, мне следует больше узнать о предмете, прежде чем пытаться решить чужие проблемы. Урок выучен :) - person Karl Evald Wigestrand; 17.10.2016
comment
Разница в том, что GET запрос не имеет (по крайней мере, не должен иметь) полезной нагрузки запроса. Я понимаю, что OP получает rawData в полезной нагрузке (теле) запроса PUT. - person cassiomolin; 17.10.2016