He tratado BeanUtils así como PropertyDescriptors porque no tenía la información de la clase que fue pasado a mi método. Ni siquiera sabía los tipos de datos de las propiedades aprobadas, por lo que los valores de configuración se volvieron difíciles. Sé que BeanUtils debería hacer la conversión automáticamente para la propiedad y configurarla, pero no estaba guardando los datos para mí. Finalmente, tuve que confiar en obtener los campos. Esto es lo que hice:
Field[] fields = className.getDeclaredFields();
for (int i=0; i<fields.length ;i++)
{
String element = fields[i].getName();
String propertyType = fields[i].getType().getName();
fields[i].setAccessible(true);
if(propertyType.equalsIgnoreCase("java.lang.Integer"))
{
fields[i].set(mypojoObj, Integer.parseInt(parameterValue));
}
else
{
fields[i].set(mypojoObj, parameterValue);
}
}
Hice una caja de interruptores similar para convertir todos los tipos de propiedades en tipos correctos. Al recuperar de la página, request.getParameter (paramname) siempre devolvía String, por lo que esta conversión me funcionó. Cualquier mejor opción para la conversión directa de datos será realmente útil.
solo para el ignorante (yo), ¿por qué no simplemente llamar a someBean.setName ("Fred")? – simpatico
@simpatico para una sola propiedad conocida, obviamente, sí. Pero si desea administrar el acceso a muchas propiedades diferentes de muchos tipos diferentes de objetos, use las propiedades de bean –
gracias. Lo compro si las propiedades están configuradas en un archivo que uno carga y luego simplemente llama a BeanUtils.populate (someBean, properties); Pero en la práctica nunca llamaría a set ("nombre", "Fred") mientras puedo llamar a setName ("Fred") directamente (yo no el tuyo es solo código de ejemplo). – simpatico