2016-07-06 14 views
0

Я пишу приложение службы RESTful в Java EE 6. Я столкнулся с трудностью при определении метода HTTP GET, который использует аннотацию @FormParam.Ошибка службы RESTful Java в аннотации @FormParam

технологии, которые я использую:

  • Затмения EE Kepler IDE
  • JDK v7
  • Glassfish 3 (на основе Java 6)
  • Джерси (часть Glassfish)

Java:

@GET 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
@Produces(MediaType.TEXT_HTML) 
@Path("/getFromForm") 
public String getFromForm(@FormParam("input") String input){ 
    log.log(Level.INFO, "Invoked getFromForm"); 
    String html = "<html> <body>" 
      +"<center><h1> "+input+"</h1></center>" 
      +"</body></html>"; 
    return html; 
} 

JSP:

<form action="/RESTfulServiceDrill/rest/v6/html/getFromForm" method="get" 

enctype="application/x-www-form-urlencoded"> 

<label> Add message: </label> 
<input type="text" name="input"/> 

<input type="submit" value="OK"/> 
<input type="reset" value="clear"/> 

</form> 

Исключение:

java.lang.IllegalStateException: The @FormParam is utilized when the content type of the request entity is not application/x-www-form-urlencoded 

Любые идеи, что виновником является?

+0

Очень хорошая точка; это правильный ответ – ucas

ответ

1

Вы должны использовать POST, а не GET. В GET браузер не будет устанавливать заголовок Content-Type, поскольку параметры передаются в URL-адресе, а не в теле. Если вы хотите сохранить его с помощью GET, используйте @QueryParam, который фиксирует параметр из строки запроса в URL-адресе