Pregunta

Quiero convertir la entrada de usuario que viene como Map<String, String[]> a objetos en Java. Más specically Quiero convertir los parametros de un HttpServletRequest a los campos de un objeto de dominio arbitrario.

Me gustaría tener algo como esto:

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

Si hay más de un elemento en la matriz de cadena, que es el valor de una entrada de mapa, que debe ser convertido a una lista o matriz. Tal vez la configuración regional debe ser considerado para la fecha y la conversión de moneda. Y una lista de errores de conversión sería bueno.

¿Hay una biblioteca con un convertidor de este tipo?

¿Quieres que lo llaman "convertidor"? Creo que a menudo se denomina "enlace de datos", pero que es el término equivocado en mi opionion, ya que se relaciona con valores del modelo de unión a elementos de interfaz gráfica de usuario, lo que es una cosa un poco diferente - no es cierto

¿Fue útil?

Solución

Si su framework de desarrollo web no soporta esta funcionalidad echar un vistazo a
http://commons.apache.org/beanutils/ , espeically el paquete BeanUtils que tiene clases con usos similares (tal vez exactamente el mismo) que desee.

También puede considerar el cambio a un marco más maduro; -)

Otros consejos

No utilice este código normal, ya que es sólo un ejemplo. Usted debe agregar algo de manejo de excepciones bonita y un bucle a través de un mapa. Pero en general, la idea es la siguiente:

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

Este código, dado un nombre de parámetro 'nombre' a tratar de encontrar un método setName(String name) y llamarlo con el valor dado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top