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(); } }