[Wicket-ja-user 349] Re: FeedbackPanel にメッセージを出力するとStackOverflowError等が起きてしまう。

アーカイブの一覧に戻る

Tsutomu Yano t_yano****@me*****
2009年 7月 3日 (金) 00:33:40 JST


矢野です。

質問への直接の解答ではないのですが...関連あるかもしれないので書いておきます。

サブミットしたあとに自画面(サブミットした元の画面ですよね?)に遷移するには「setResponsePageしない」
のが普通だと思うのですが、敢えて毎回new TestPageしているのには、特別な理由があるのでしょうか。


サンプルコードでいえば、SubmitLinkのonSubmit()でinfo()を呼んだあと、setResponsePage()も呼ばずに
そのままonSubmit()を終えてしまえば、Wicketは同じページを再描画します。

もしかしたら毎回同じページをnewしていることが関係しているかもしれない、と思いました。


On 2009/07/02, at 21:44, maeda wrote:

> maedaです。
>
> SubmitLinkでの処理で
> infoメソッドやerrorメソッドでメッセージを設定後に
> setResponsePageで自画面に遷移しているのですが
>
> 自画面 → リンク押下 → 自画面 → リンク押下  自画面 ・・・
>
> のように何度も連続でリンクを押下すると
> StackOverflowErrorやOutOfMemoryErrorが発生してしまいます。
>
> infoメソッドやerrorメソッドの呼出しを止めるとエラーが起きなくなるのですが
>
> infoメソッドやerrorメソッドの使い方等に問題があるのでしょうか?
>
> よろしくお願いいたします。
>
>
> 以下、省略したソースです。
>
> public class TestPage extends AuthenticatedWebPage {
>
> 	@Inject
> 	TestService testService;
>
> 	private TestFormBean testFormBean;
> 	private Form form;
>
> 	static Logger log = Logger.getLogger(TestPage.class);
>
> 	/**
> 	 *
> 	 * コンストラクタ(画面表示)
> 	 *
> 	 */
> 	public TestPage(Long key) {
> 		super();
> 		MySession mySession = (MySession) Session.get();
>
> 		testformBean = new TestFormBean();
>
> 		//コンポーネント作成
> 		form = new FormEx("test" ,new CompoundPropertyModel(testFormBean));
> 		this.add(form);
>
> 		//個別のコンポーネント作成
> 		addComponentInsUpd(form);
>
> 		//リンク等
> 		form.add(updateLink);
> 	}
>
> 	/**
> 	 *
> 	 * コンポーネントを作成する。
> 	 *
> 	 * @param  Form                Formクラス
> 	 */
> 	public void addComponentInsUpd(Form form){
> 		//----------------------------------------------------------
> 		//ここでTextField,FeedbackPanelの作成などを行っています。
> 		//----------------------------------------------------------
> 	}
>
> 	/**
> 	 *
> 	 * 更新処理
> 	 *
> 	 */
> 	private SubmitLink updateLink = new SubmitLink("updateLink") {
> 		@Override
> 		public void onSubmit(){
> 			MySession mySession = (MySession) Session.get();
>
> 			//----------------------------------------------------------
> 			//リンクでの処理 処理自体を全てコメントにしても特に変化なしでした。
> 			//----------------------------------------------------------
>
> 			info("更新しました。");		//←これをコメントするとエラーにならない。
> 			setResponsePage(new TestPage(testFormBean.getKey()));
> 		}
> 	};
> }
>
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user



---------------------------------------------------
矢野 勉(やの つとむ)
電子メール: t_yano****@me*****
---------------------------------------------------




Wicket-ja-user メーリングリストの案内
アーカイブの一覧に戻る