2012-11-06 11 views
5

Stellen Sie sich die folgende Anforderung: Anforderungsparameter müssen mit Spring MVC 3.0 an Objekte gebunden werden. Die Anforderungsparameter enthalten Unterstriche (z. B. http://myurl:80/x?param_one=1&param_two=2). Diese Parameter sollten an das folgende Objekt gebunden sein:Binding Request-Parameter mit Unterstreichungen in Spring MVC 3.0

class MyObject { 
    private Integer paramOne; 
    private Integer paramTwo; 

    ... 
} 

Wie würden Sie dabei vorgehen?

Wichtiger Hinweis: Beachten Sie, dass möglicherweise eine erhebliche Menge an Parametern und Objekten vorhanden ist und dass es nicht als bewährte Methode angesehen wird, Setter-Methoden für Objekte mit Unterstrichen zu definieren.

+1

Ich habe eine Antwort auf diese Frage hinzugefügt, die Sie unten sehen können. Haben Sie dafür eine elegantere Lösung gefunden als das, was ich zur Verfügung gestellt habe? Ich würde eine bessere Lösung selbst lieben. –

Antwort

1

Sie können diese mit @RequestMapping Attribut tun

@RequestParam(value = "param_One") String paramOne,@RequestParam(value = "param_two") String paramTwo 

Fügen Sie diese in Methodensignatur

Aber für die beste Praxis ist es besser gleichen Variablennamen übergeben

+4

Während ich die Antwort zu schätzen weiß, bedenke ich, dass am Ende der Frage: * Bedenken Sie auch, dass es eine erhebliche Menge an Parametern und Objekten wie dieser * sein kann. '@ RequestParam' ist in diesem Fall nicht durchführbar, da dies Controller-Methodensignaturen mit mehr als 20 Argumenten bedeuten würde. – tmbrggmn

2

Rajith Antwort für Controller-Methoden ist speziell, und adressiert nicht Ihre Frage ursprünglich gefragt, wie Unterstreichungsparameter an ein Objekt gebunden werden.

Die hacky Lösung, die ich zur Zeit an der richtigen Stelle ist zu erreichen, was Sie fragen, eigentlich ist meine Setter in diesem Stil zu nennen:

public void setProject_ids(List<Long> project_ids) { 

Beachten Sie, dass RequestParam nicht auf Verfahren angewendet werden kann, und es muss nicht ein Effekt, wenn er auf das Argument dieses Setter angewendet wird.