Question

Je veux convertir l'entrée d'utilisateur qui se présente comme Map<String, String[]> aux objets Java. Plus spéciquement Je veux convertir les params d'un HttpServletRequest aux champs d'un objet de domaine arbitraire.

Je voudrais avoir quelque chose comme ceci:

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

S'il y a plus d'un élément dans le tableau de chaînes, qui est la valeur d'une entrée de la carte, il doit être converti en une liste ou un tableau. Peut-être que les paramètres régionaux devrait être pris en considération pour la date et la conversion des devises. Et une liste des erreurs de conversion serait bien.

Y at-il une bibliothèque avec un tel convertisseur?

Peut-on parler « convertisseur »? Je pense qu'il est souvent appelé « liaison de données », mais qui est le mauvais terme dans mon opionion, car elle est liée à des valeurs de modèle de liaison aux éléments GUI, ce qui est une chose un peu différent - est pas

Était-ce utile?

La solution

Si votre cadre ne supporte pas cette fonctionnalité un coup d'oeil sur
http://commons.apache.org/beanutils/ , espeically le paquet BeanUtils qui a cours avec des objectifs similaires (peut-être exactement les mêmes) que vous voulez.

Vous pouvez également envisager de passer à un cadre plus mature; -)

Autres conseils

Ne pas utiliser ce code simple car il est seulement un exemple. Vous devez ajouter un peu à peu la gestion des exceptions et une boucle à travers une carte. Mais en général l'idée est comme ceci:

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

Ce code, donné un nom de paramètre 'name' va essayer de trouver une méthode setName(String name) et appeler à la valeur donnée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top