Hi, We're working on a wicket/spring/hibernate webapp (research repository) and today i was working on an 'Add Publication Panel'. i added some validation today but whenever i click on the link that shows the panel in the main content area it takes like 10/15 seconds to show it. Tomcat doesn't show any errors and everything is working. here's my Add Publication Panel. i have no idea as to what could be causing this.
here's my panel's .java public class AddPublicationPanel extends BasicPanel { @SpringBean private IBrowseService browseService; @SpringBean private IAddEditService addEditService; @SpringBean private IBook book; @SpringBean private IConferencePaper conferencePaper; @SpringBean private ITechnicalReport technicalReport; @SpringBean private IWorkshop workshop; @SpringBean private IArticle article; @SpringBean private IBookChapter bookChapter; @SpringBean(name = "book") private IPublication publication; private List<Short> year; private List<Byte> month; private Form form; private WebMarkupContainer detailsBook, detailsConferencePaper, detailsTechnicalReport, detailsWorkshop, detailsArticle, detailsBookChapter, detailsCurrent; private AjaxFallbackLink addAuthor, removeAuthor; private AutoCompleteTextFieldUser[] authors; public AddPublicationPanel() { super("block", "Add Publication"); initLists(); initCommon(); initDetails(); } private void initCommon() { add(new FeedbackPanel("feedback")); add(form = new Form("form", new CompoundPropertyModel( publication)) { protected void onSubmit() { switch (publication.getPublicationType()) { case BOOK: break; case BOOK_CHAPTER: break; case ARTICLE: break; case CONFERENCE_PAPER: break; case WORKSHOP: break; case TECHNICAL_REPORT: break; } } }); // title form.add(new TextField("title").setRequired(true).add( StringValidator.maximumLength(128))); // year form.add(new DropDownChoice("year", year)); // month form.add(new DropDownChoice("month", month, new ChoiceRenderer() { @Override public Object getDisplayValue(Object object) { return (new DateFormatSymbols().getMonths())[((Byte) object) .intValue()]; } })); // abstractText form.add(new TextArea("abstractText").add(StringValidator .maximumLength(2048))); // required?????????????????????????????? // reproducible form.add(new CheckBox("reproducible")); // passwordProtected form.add(new CheckBox("passwordProtected")); // keywords form.add(new TextField("keywords").add( new PatternValidator("(\\s*\\w+\\s*,*\\s*)*,*\\s*")).add( StringValidator.maximumLength(2048))); // authors (internal & external) authors = new AutoCompleteTextFieldUser[10]; for (int i = 0; i < 10; i++) // use model to set authors (internal & external) // later***************** form.add((authors[i] = new AutoCompleteTextFieldUser("author" + i)) .setVisible(false).setOutputMarkupId(true) .setOutputMarkupPlaceholderTag(true)); authors[0].setRequired(true).setVisible(true); form.add((addAuthor = (new AjaxFallbackLink("add") { @Override public void onClick(AjaxRequestTarget target) { int pointer; for (pointer = 0; pointer < 10; pointer++) { if (!authors[pointer].isVisible()) { break; } } if (pointer < 10) { authors[pointer].setVisible(true); if (pointer == 9) this.setVisible(false); if (pointer > 0) removeAuthor.setVisible(true); if (target != null) { target.addComponent(authors[pointer]); target.addComponent(removeAuthor); target.addComponent(this); } } } })).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true)); form.add((removeAuthor = (new AjaxFallbackLink("remove") { @Override public void onClick(AjaxRequestTarget target) { int pointer; for (pointer = 0; pointer < 10; pointer++) { if (!authors[pointer].isVisible()) { break; } } pointer--; if (pointer > 0) authors[pointer].setVisible(false); if (pointer == 1) this.setVisible(false); if (pointer <= 9) addAuthor.setVisible(true); if (target != null) { target.addComponent(authors[pointer]); target.addComponent(addAuthor); target.addComponent(this); } } })).setVisible(false).setOutputMarkupId(true) .setOutputMarkupPlaceholderTag(true)); // departments form.add(new ListMultipleChoice("departments", new LoadableDetachableModel() { @Override protected Object load() { return browseService.findAllDepartments(); } }, new ChoiceRenderer("name", "id")).setRequired(true)); // publicationType form.add((new DropDownChoice("publicationType", Arrays .asList(PublicationType.values()), new ChoiceRenderer( "displayName", "id")).setRequired(true)) .add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override protected void onUpdate(AjaxRequestTarget target) { target.addComponent(detailsArticle); target.addComponent(detailsBook); target.addComponent(detailsBookChapter); target.addComponent(detailsConferencePaper); target.addComponent(detailsTechnicalReport); target.addComponent(detailsWorkshop); if (publication.getPublicationType() == null) { detailsCurrent.setVisible(false); } else { if (publication.getPublicationType().getId() == 0) { replaceDetails(detailsArticle).setModel( new CompoundPropertyModel(article)); publication = article; } else { if (publication.getPublicationType().getId() == 1) { replaceDetails(detailsBook).setModel( new CompoundPropertyModel(book)); publication = book; } else { if (publication.getPublicationType() .getId() == 2) { replaceDetails(detailsBookChapter) .setModel( new CompoundPropertyModel( bookChapter)); publication = bookChapter; } else { if (publication.getPublicationType() .getId() == 3) { replaceDetails( detailsConferencePaper) .setModel( new CompoundPropertyModel( conferencePaper)); publication = conferencePaper; } else { if (publication .getPublicationType() .getId() == 4) { replaceDetails( detailsTechnicalReport) .setModel( new CompoundPropertyModel( technicalReport)); publication = technicalReport; } else { if (publication .getPublicationType() .getId() == 5) { replaceDetails( detailsWorkshop) .setModel( new CompoundPropertyModel( workshop)); publication = workshop; } } } } } } } } })); // clear button form.add((new AjaxFallbackButton("clear", form) { @Override protected void onSubmit(AjaxRequestTarget target, Form form) { form.clearInput(); if (target != null) target.addComponent(form); } }).setDefaultFormProcessing(false)); } private void initDetails() { // article (detailsArticle = new WebMarkupContainer("detailsArticle")).setVisible( false).setOutputMarkupId(true).setOutputMarkupPlaceholderTag( true); detailsArticle .add( new TextField("journalName").setRequired(true).add( StringValidator.maximumLength(128))) .add( new TextField("volume").add(NumberValidator.range(0, Short.MAX_VALUE))) .add( new TextField("issue").add(NumberValidator.range(0, Long.MAX_VALUE))) .add( new TextField("pages") .add(StringValidator.maximumLength(64)) .add( new PatternValidator( "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*"))); // book (detailsBook = new WebMarkupContainer("detailsBook")).setVisible(false) .setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true); detailsBook.add( new TextField("ISBN").setRequired(true).add( StringValidator.lengthBetween(10, 13))) .add( new TextField("series").add(StringValidator .maximumLength(128))).add( new TextField("edition").add(StringValidator .maximumLength(64))).add( new TextField("volume").add(NumberValidator.range(0, Short.MAX_VALUE))).add( new TextField("publisher.name").setRequired(true).add( StringValidator.maximumLength(128))).add( new TextField("publisher.address").add(StringValidator .maximumLength(128))); // book chapter (detailsBookChapter = new WebMarkupContainer("detailsBookChapter")) .setVisible(false).setOutputMarkupId(true) .setOutputMarkupPlaceholderTag(true); detailsBookChapter .add( new TextField("bookISBN").setRequired(true).add( StringValidator.lengthBetween(10, 13))) .add( new TextField("bookTitle").setRequired(true).add( StringValidator.maximumLength(128))) .add( new TextField("series").add(StringValidator .maximumLength(128))) .add( new TextField("edition").add(StringValidator .maximumLength(64))) .add( new TextField("volume").add( NumberValidator.range(0, 32767)).setType( Short.class)) .add( new TextField("pages") .setRequired(true) .add(StringValidator.maximumLength(64)) .add( new PatternValidator( "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*"))) .add( new TextField("publisher.name").setRequired(true).add( StringValidator.maximumLength(128))).add( new TextField("publisher.address").add(StringValidator .maximumLength(128))); // conference paper (detailsConferencePaper = new WebMarkupContainer( "detailsConferencePaper")).setVisible(false).setOutputMarkupId( true).setOutputMarkupPlaceholderTag(true); detailsConferencePaper .add( new TextField("conferenceBookTitle").setRequired(true) .add(StringValidator.maximumLength(128))) .add( new TextField("conferenceAddress").add(StringValidator .maximumLength(128))) .add( new TextField("pages") .add(StringValidator.maximumLength(64)) .add( new PatternValidator( "(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*"))) .add( new TextField("editors").add(StringValidator .maximumLength(256))).add( new TextField("sponsors").add(StringValidator .maximumLength(512))).add( new TextField("publisher.address").add(StringValidator .maximumLength(128))).add( new TextField("publisher.name").setRequired(true).add( StringValidator.maximumLength(128))); // technical report (detailsTechnicalReport = new WebMarkupContainer( "detailsTechnicalReport")).setVisible(false).setOutputMarkupId( true).setOutputMarkupPlaceholderTag(true); detailsTechnicalReport.add( new DropDownChoice("type", Arrays.asList(TechnicalReportType .values()), new ChoiceRenderer("displayName", "id"))) .add( new TextField("institution").setRequired(true).add( StringValidator.maximumLength(128))).add( new TextField("institutionAddress").add(StringValidator .maximumLength(128))); // setting the default value of the technical report type to // PRIMARY_RESEARCH technicalReport.setType(TechnicalReportType.PRIMARY_RESEARCH); // workshop (detailsWorkshop = new WebMarkupContainer("detailsWorkshop")) .setVisible(false).setOutputMarkupId(true) .setOutputMarkupPlaceholderTag(true); detailsWorkshop.add( new TextField("workshopTitle").setRequired(true).add( StringValidator.maximumLength(128))).add( new TextField("workshopNumber").add(NumberValidator.range(0, Long.MAX_VALUE))).add( new TextField("workshopAddress").add(StringValidator .maximumLength(128))); detailsCurrent = detailsBook; form.add(detailsArticle).add(detailsBook).add(detailsBookChapter).add( detailsConferencePaper).add(detailsConferencePaper).add( detailsTechnicalReport).add(detailsWorkshop); } private void initLists() { // years year = new ArrayList<Short>(); for (short i = (short) Calendar.getInstance().get(Calendar.YEAR); i >= 1950; i--) { year.add(new Short(i)); } // setting the default value of year to current year publication.setYear(new Short((short) Calendar.getInstance().get( Calendar.YEAR))); // months month = new ArrayList<Byte>(); for (byte i = 0; i < 12; i++) { month.add(new Byte((byte) i)); } } private Form replaceDetails(WebMarkupContainer replacement) { detailsCurrent.setVisible(false); (detailsCurrent = replacement).setVisible(true); return form; } }