Originariamente inviato da dardo
dalla servlet istanzio la classe che fa il lavoro mi restituisce di conseguenza un bean di cui non conosco le proprietà.
A questo punto con session.getAttribute("...") avrò un bean ancora sconosciuto.
come proseguire?
Quindi la questione è che hai un oggetto di cui non sai a priori quante/quali proprietà ha e vorresti "enumerare" le proprietà per stamparle?
La prima cosa che mi viene in mente è quella di usare le classi del package java.beans, dedicato alla gestione dei bean e alla loro "introspezione".
Ecco un esempio basilare per elencare tutte le "proprietà" (come intese secondo le specifiche JavaBean) di un JLabel:
codice:
import java.beans.*;
import javax.swing.*;
public class Prova {
public static void main(String[] args) {
try {
enumeraProprieta(new JLabel());
} catch (Exception e) {
System.err.println(e);
}
}
public static void enumeraProprieta(Object obj) throws IntrospectionException {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propsDesc = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propsDesc.length; i++) {
System.out.println("Property: " + propsDesc[i].getName());
}
}
}
Output parziale per JLabel:
codice:
Property: UI
Property: UIClassID
Property: accessibleContext
Property: actionMap
Property: alignmentX
Property: alignmentY
Property: ancestorListeners
Property: autoscrolls
Property: background
Property: baselineResizeBehavior
Property: border
Property: component
.......altro