Ci sono diversi modi per farlo.
Se è possibile modificare MyDTO
classe il modo più semplice è quello di aggiungere un setter come suggerito da M.Deinum:
public class MyDTO {
private String kiosk;
...
public void setNew_kiosk(String kiosk) {
this.kiosk = kiosk;
}
}
In questo modo, è possibile elaborare http://localhost:1234/mvc/controllerUrl?kiosk=false
così come http://localhost:1234/mvc/controllerUrl?new_kiosk=false
Se sei non è consentito farlo (poiché il DTO fa parte di una libreria che non è possibile modificare o ...), è possibile utilizzare un filtro mappato su /mvc/controllerUrl
, che avvolgerebbe la richiesta con un valore personalizzato HttpServlerRequestWrapper
che sovrascriverà i seguenti metodi:
String getParameter(String name)
Map<String,String[]> getParameterMap()
Enumeration<String> getParameterNames()
String[] getParameterValues(String name)
chiamare i metodi della richiesta sottostante ed elaborare il nome del parametro speciale. Esempio:
String[] getParameterValues(String name) {
String[] values = req.getParameterValues(name); // req is the wrapped request
if ("kiosk".equals(name) && (values == null) { // will accept both names
values = req.getParameterValues("new_kiosk"); // try alternate name
}
return values;
}
Questo sarà molto più difficile da scrivere e di prova, in modo che solo andare in questo modo, se non è possibile modificare MyDTO
classe.
Si potrebbe anche provare a utilizzare un'implementazione personalizzata di WebBindingInitializer
.Da Spring Framework Reference Manual:
di esternare i dati di inizializzazione vincolante, è possibile fornire un'implementazione personalizzata dell'interfaccia WebBindingInitializer
, che poi attiva fornendo una configurazione personalizzata per un chicco di AnnotationMethodHandlerAdapter
, ignorando così la configurazione di default.
Attenzione: l'utilizzo consigliato è quello di registrare editor personalizzati per un'intera applicazione, non il caso d'uso. E Spring Framework è oftern descritto come facile da estendere ma non da sostituire. Caveat emptor ...
Sommario: tenta di utilizzare il metodo 1, se non è possibile, quindi utilizzare method2, e solo provare method3 se avete altre ragioni per usare un costume WebBindingInitializer
Qual è il tipo di dati (JSON/XML ecc.) Che stai accettando dal front end? – RE350
@ RE350 È solo ottenere parametri. url come questo ** controllerUrl? new_kiosk = false ** – gstackoverflow
Suggerisco caldamente una lettura della specifica java bean. Una proprietà è solo il nome del getter/setter su come il campo è chiamato internamente non importa. Se il tuo campo è chiamato 'foo' e hai un metodo' setBar' che imposta il valore di 'foo' hai una proprietà' bar'. Proprietà! = Campo. –