-1

同じクラスへのメンバー参照を含むクラスの Struts フォームをセットアップするときに問題が発生しています。

class ExampleBean {
  Integer id;
  String name;
  ExampleBean parent;

  // Constructors, getters, setters
}

フォームを含む Web ページにアクセスすると、例外が返されるまでプロセスが無限ループに入るようです。

それが助けになるなら、私はフォームを生成するためにxdocletを使用しています。

4

1 に答える 1

1

あなたは十分な情報を提供していません (そのため、何が起こっているのか推測することしかできません) が、これは 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
}

StackOverflowErrorJVM がインスタンスを作成しようとすると、実際に無限再帰が発生するためです。

使用している完全なコードを表示する必要があります。

このような状況では、Struts フォームreset()メソッドが使用されます。Bean の内部プロパティでデフォルトの初期化を提供しませんが、代わりに内部 Bean を作成し、reset()メソッド内の外部 Bean で初期化します。

于 2012-11-25T14:55:23.677 に答える