あなたは十分な情報を提供していません (そのため、何が起こっているのか推測することしかできません) が、これは Struts の問題ではないと思います。
Struts フォームでネストされたプロパティを使用する場合、HTML 入力名に次のようなものを指定します:parent.id
およびparent.name
.
Struts は、アクション フォームにリクエスト データを入力する際にこれを検出するとgetParent().setId(...)
、getParent().setName(...)
フォームに対して実行を試みます。
null を返す場合getParent()
、BeanUtils から次のようなエラーが返されますjava.lang.IllegalArgumentException: No bean specified
。したがって、内部 Bean バインディングが機能するためには、Bean を初期化してから、Struts にバインディングを行わせる必要があります。
ひょっとして、あなたは次のようなことをしましたか?
class ExampleBean {
Integer id;
String name;
ExampleBean parent = new ExampleBean();
// Constructors, getters, setters
}
StackOverflowError
JVM がインスタンスを作成しようとすると、実際に無限再帰が発生するためです。
使用している完全なコードを表示する必要があります。
このような状況では、Struts フォームreset()
メソッドが使用されます。Bean の内部プロパティでデフォルトの初期化を提供しませんが、代わりに内部 Bean を作成し、reset()
メソッド内の外部 Bean で初期化します。