2016-09-13 1 views
0

У меня есть следующий ответ POST в JAX-RS.Получение имени неизвестного параметра в запросе POST в Java (JAX-RS)

@POST 
@Path("/save") 
public Response saveS(@FormParam(key) String value) throws SQLException {   
    return Response.ok("TODO", MediaType.APPLICATION_JSON).build(); 
} 

Параметр, который получил можно назвать name или age или много других вещей. Я определил его как key в коде (очевидно, он не работает).

Как получить имя этого параметра?

Благодаря

ответ

1

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

Как вы уже выяснили, это не работает, потому что @FormParam ожидает имя параметра формы, как определено в соответствующей HTML-форме. Это означает, что вы должны знать, какой параметр формы вы хотите присвоить параметру (value в этом случае) метода.

Вот определение @FormParam аннотацию, извлеченной из JAX-RS specification:

FormParam Параметр

Указывает, что значение параметра метода должна быть извлечена из параметра формы в теле запроса объекта , Значение аннотации определяет имя параметра формы. Обратите внимание, что, хотя цель аннотации позволяет использовать поля и методы, спецификация требует только поддержки для использования в параметрах метода ресурса.

И в дополнение к этому следует добавить @Consumes аннотацию к вашему методу ресурсов следующим образом:

@POST 
@Path("/save") 
@Consumes("application/x-www-form-urlencoded") 
public Response saveS(@FormParam(key) String value) throws SQLException {   
    return Response.ok("TODO", MediaType.APPLICATION_JSON).build(); 
} 

Update: Я не пробовал сам, но вы можете попробовать и сказать мне если он работает. Здесь вы должны получить все параметры, чтобы вы могли анализировать все поля формы:

@POST 
@Consumes("application/x-www-form-urlencoded") 
public void post(MultivaluedMap<String, String> formParams) { 
    // parse the map here 
} 
+0

Я полагаю, что нет никакого способа сделать это, даже без FormParam? – Arturo

+1

Не уверен, что это вам поможет, я обновил ответ. Посмотрите и дайте мне обратную связь, чтобы изменить ответ. – ujulu