Domanda

voglio convertire l'input dell'utente che si presenta come Map<String, String[]> agli oggetti in Java. Più specically voglio convertire i params di un HttpServletRequest ai campi di un oggetto di dominio arbitrario.

Mi piacerebbe avere qualcosa di simile:

Domain d = Converter.convert(params, new Domain());

Se v'è più di un elemento della matrice di stringhe, che è il valore di una voce della mappa, dovrebbe essere convertito in un elenco o di una matrice. Forse il locale dovrebbe essere considerato per la data e la conversione di valuta. E un elenco di errori di conversione sarebbe bello.

C'è una biblioteca con tale convertitore A?

lo chiameresti "convertitore"? Penso che è spesso chiamato "l'associazione di dati", ma che è il termine sbagliato nel mio parere, era pulito, in quanto è legato ai valori del modello legame con elementi della GUI, che è una cosa un po 'diversa -? Non è vero

È stato utile?

Soluzione

Se il framework web non supporta questa funzionalità dare un'occhiata al
http://commons.apache.org/beanutils/ , espeically il pacchetto beanutils che ha classi con scopi simili (forse esattamente la stessa cosa) che si desidera.

Si può anche prendere in considerazione il passaggio a un quadro più maturo; -)

Altri suggerimenti

Non utilizzare questo codice semplice in quanto è solo un esempio. Si dovrebbe aggiungere un po 'la gestione delle eccezioni carina e un ciclo attraverso una mappa. Ma in generale l'idea è in questo modo:

void putValue(String name, String value, Object object) throws Exception {
    String setterName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
    Method m = object.getClass().getMethod(setterName, String.class);
    if (m!=null) {
        m.invoke(object, value);
    }
}

Questo codice, dato un nome di parametro 'nome' cercherà di trovare un metodo setName(String name) e chiamarlo con il valore dato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top