2014-03-12 8 views
6

Wie lassen sich Abfrageparameter am besten mit mehreren Namen benennen? Ich habe einen Webservice, der die Parameternamen geändert hat, muss aber noch eine Weile fortfahren, um die alten Namen zu akzeptieren.Spring MVC @RequestParam - mehrere Schlüsselnamen? oder eine andere Möglichkeit, "das eine oder andere" zu erfordern

Ich bin nicht bereit, 2 RequestParams zu erstellen, beide nicht erforderlich, b/c Ich brauche die eine oder andere vorhanden sein. So etwas wie das wäre süß:

@RequestParam(value = "startTime|start", required = true) String startTime, 

statt

@RequestParam(value = "startTime", required = false) String startTime, 
@RequestParam(value = "start", required = false) String start){ 
if (start != null || startTime != null){ // ... 

Gibt es eine Möglichkeit, dies zu tun? Vielen Dank.

+1

Ich denke, die einzige Möglichkeit ist, die zweite hören: S. – Augusto

Antwort

3

Sie können etwas tun (eine Proxy-Methode erstellen, die die „alten“ Anrufe abfangen und sie auf die neue Methode):

@RequestMapping(value="/your-mapping", params = {"oldparam1", "oldparam2", ...}) 
public Whatever yourOldMethod(@RequestParam(value="oldparam1", required=true) String oldParam1, ...){ 
    return yourNewMethod(oldParam1, ...); 
} 

@RequestMapping(value="/your-mapping", params = {"newparam1", "newparam1", ...}) 
public Whatever yourNewMethod(@RequestParam(value="newparam1", required=true) String oldParam1, ...){ 
    //do whatever you need to do here 
} 

Wenn Sie nicht brauchen, die alten Anrufe zu unterstützen , löschen Sie einfach yourOldMethod.

Die Schönheit hier wird mit der "params" von @RequestMapping, so dass zwei Methoden zum gleichen "URL" (mit unterschiedlichen params für jeden)

+0

Danke. Dies wird immer noch hässlich, da ich mehrere Paare von Namen in der gleichen Funktion habe, leider nicht alt gegen neu. Aber ich sauge es auf und handle mit den Combos. –

Verwandte Themen