Frage

Ich möchte eine Benutzereingabe konvertieren, die auf Objekte in Java als Map<String, String[]> kommt. Mehr spezisch Ich möchte die params eines HttpServletRequest auf die Felder eines beliebigen Domain-Objekt konvertieren.

Ich mag so etwas haben:

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

Wenn es mehr als ein Element in dem String-Array ist, die der Wert eines Map-Eintrags ist, sollte es zu einer Liste oder Array umgewandelt werden. Vielleicht sollte das Gebietsschema für das Datum und die Währungsumrechnung in Betracht gezogen werden. Und eine Liste der Konvertierungsfehler wäre schön.

Gibt es eine Bibliothek mit einem solchen Konverter?

nennen würde man es „Konverter“? Ich denke, es ist oft als „Datenbindung“ genannt wird, aber das ist der falsche Begriff in meiner opionion, da es verbindliche Modellwerte zu GUI-Elementen verwendet ist, was ist eine etwas andere Sache - ist es nicht

War es hilfreich?

Lösung

Wenn Sie Ihr Web-Framework diese Funktionalität nicht unterstützt einen Blick auf
http://commons.apache.org/beanutils/ , espeically das Beanutils Paket, das Klasse hat mit ähnliche Zwecke (vielleicht genau das gleiche), die Sie wollen.

Sie können sich auch zu einem reiferen Rahmen zu schalten; -)

Andere Tipps

Verwenden Sie diese Ebene Code nicht, da es nur ein Beispiel. Sie sollten einige ziemlich Ausnahmebehandlung und eine Schleife durch eine Karte hinzufügen. Aber im Allgemeinen die Idee ist wie folgt:

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);
    }
}

Dieser Code, da ein Parametername 'name' wird versuchen, eine Methode setName(String name) zu finden und mit dem angegebenen Wert nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top