Vous ne fournissez pas assez d'informations (donc je ne peux que deviner ce qui se passe) mais je ne pense pas que ce soit un problème avec Struts. Lorsque vous utilisez des propriétés imbriquées dans votre formulaire Struts, vous spécifiez quelque chose comme ceci pour vos noms d'entrée HTML: parent.id
et parent.name
.
Lorsque Struts trouve ceci lors du remplissage de votre formulaire d'action avec des données de requête, il essaie de faire getParent().setId(...)
et getParent().setName(...)
sur votre formulaire. Si getParent()
renvoie null, vous obtiendrez une erreur de BeanUtils, quelque chose comme java.lang.IllegalArgumentException: No bean specified
. Donc, pour que la liaison du bean interne fonctionne, vous devez l'initialiser et ensuite laisser Struts faire la liaison.
par hasard que tu as fait quelque chose comme ceci:
class ExampleBean {
Integer id;
String name;
ExampleBean parent = new ExampleBean();
// Constructors, getters, setters
}
parce que cela va provoquer une effet récursion infinie et un StackOverflowError
lorsque la machine virtuelle Java tente de créer une instance.
Vous devriez vraiment montrer le code complet que vous utilisez!
Pour les situations de ce type, la méthode Struts du formulaire reset()
est celle à utiliser. Vous n'indiquez pas l'initialisation par défaut dans la propriété interne du bean, mais vous créez le bean interne et l'initialisez dans le bean externe à l'intérieur de la méthode reset()
.