2012-04-05 10 views
4

Ich möchte eine Methode mit dem @QueryParam zu überlasten, aber jedes Mal wenn ich versuche, diesen Code auszuführen, es wirft:Wie kann ich eine Methode mit @QueryParam in Jersey/Spring überladen?

SEVERE: Exception occurred when intialization 
com.sun.jersey.spi.inject.Errors$ErrorMessagesException 

Mein Code ist:

@GET 
@Path("/test") 
@Produces("text/plain") 
public String getText(@QueryParam("PID") String pid) 
{ 
    return pid; 
} 

@GET 
@Path("/test") 
@Produces("text/plain") 
public String getText(@QueryParam("PID") String pid, @QueryParam("NAME") String name) 
{ 
    return pid + name; 
} 

Antwort

7

Nein sein kann.

Es ist in Ordnung, in Java, aber die Sache über sie ist - von der Servlet-Seite - muss Jersey jede URL zu irgendeiner Funktion in Ihrer Klasse abzubilden.

Was können Sie tun, ist natürlich, trennen sie in zwei Verfahren oder eine Methode erstellen, die die Parameter überprüft und hat die richtige Logik.

+3

+1 Methoden mit verschiedenen Argumenten erstellen müssen einen eindeutigen Pfad haben. Abfrageparameter werden nicht als Teil des Pfads betrachtet. Sie könnten stattdessen '@ PathParam' verwenden. – Qwerky

0

Sie den Rest Endpunkt sind in Bezug auf welche Anfrage/Abfrage überlasten können Parameter in der Anfrage.

Hier ist die Antwort, die meinen Anwendungsfall gelöst: zwei Verfahren zum selber URL-Muster