[Wicket-ja-user 37] 複数のFeedbackPanelからの取得

Back to archive index

tj_takehana tgens****@gmail*****
2008年 3月 12日 (水) 19:26:57 JST


はじめまして、竹花といいます。

現在、JavaとWicketの勉強をしていて、バーコードを使ってAmazon Web Serviceから書籍データを取得するWebアプリを作っています。

以下のような流れのものを作っています。
1.ボタンAでバーコードの数値をサブミット
2.書籍データを取得し表示
3.ボタンBでDBに登録
異なるアクションを起こすので、ボタンAとボタンBは別のフォームにあります。

エラーチェックのために、フォームA用、B用それぞれにFeedbackPanelを作りましたが、サブミットするとフォームAでのエラーが両方のFeedbackPanelで表示されます。フォームBも同様です。
一つのページで複数のFeedbackPanelを使うことは可能でしょうか?


あまり見やすくなく恐縮ですが、以下、ソースです。
「こうしたほうがいいんじゃないか?」等の意見も言っていただけると参考になります。
public final class BookRegister extends WebPage
{
	private String isbn;

	private String asin;
	private String title;
	private String author;
	private String publisher;

	private String errmsg;

	private Model getInfoModel;

	public void BookRegisterConstructor(){
		getApplication().getMarkupSettings().setStripWicketTags(true);

		Form getInfoForm = new Form("isbnSend") {
			protected void onSubmit(){
				String strIsbn = (String) getInfoModel.getObject();
				ChkDgtChecker chk = new ChkDgtChecker(strIsbn);
				isbnStatus = chk.isStatus();
				//ISBNが不正ならばFeedbackPanelにエラーメッセージ(予定)
				if (isbnStatus == true){
					setResponsePage(new BookRegister(strIsbn));
				}
			}
		};
		getInfoModel = new Model(isbn);

		TextField fieldIsbn = new TextField("isbn", getInfoModel);
		fieldIsbn.setRequired(true);
		fieldIsbn.add(new Validator("[0-9]{13}"));
		getInfoForm.add(fieldIsbn);

		add(getInfoForm);

		add(new FeedbackPanel("getFeedback"));


		Form regInfoForm = new Form("bookInfo") {
			protected void onSubmit(){
				setResponsePage(new BookRegister());
			}
		};

		TextField fieldAsin = new TextField("asin", new Model(asin));
		regInfoForm.add(fieldAsin);

		TextField fieldTitle = new TextField("title", new Model(title));
		fieldAsin.setRequired(true);
		regInfoForm.add(fieldTitle);

		TextField fieldAuthor = new TextField("author", new Model(author));
		regInfoForm.add(fieldAuthor);

		TextField fieldPublisher = new TextField("publisher", new Model(publisher));
		regInfoForm.add(fieldPublisher);

		add(regInfoForm);
		add(new FeedbackPanel("regFeedback"));

	}

	public BookRegister()
	{
		//初期状態
		BookRegisterConstructor();
	}

	public BookRegister(String strIsbn)
	{
		isbn = strIsbn;

		try{
			//Amazonからのデータ取得
			BookInfoGetter bkdata = (BookInfoGetter)new BookInfoGetter(strIsbn);
			asin = bkdata.getAsin();
			title = bkdata.getTitle();
			author = bkdata.getAuthor();
			publisher = bkdata.getPublisher();
		}catch(NullPointerException np){
			errmsg = "データが取得できませんでした";
		}catch(Exception ex){
			System.out.println(ex);
		}

		BookRegisterConstructor();
	}

}




Wicket-ja-user メーリングリストの案内
Back to archive index