Hi,

i have a form to add an item, i can select the type of this item from
a drop down choice and accordingly the fields specific to the item
will be replaced. before adding this line:

AjaxFormValidatingBehavior.addToAllFormComponents(form, "onblur");

everything worked perfectly, i would have my form validated. i'd find
the items added to the database and no problem seems to appear.

when i added this line to get ajax validation, after clicking on the
type in the drop down choice i'd get the following warning:

WARN org.apache.wicket.markup.html.form.AbstractTextComponent -
Couldn't resolve model type of
Model:classname=[org.apache.wicket.model.CompoundPropertyModel$AttachedCompoundPropertyModel]:nestedModel=[Model:classname=[org.apache.wicket.model.CompoundPropertyModel]:nestedModel=[Model:classname=[main.java.web.components.addedit.AddPublicationPanel$10]:attached=true:tempmodelobject=[main.java.domain.publication.arti...@745f]]]
for [MarkupContainer [Component id = ISBN]], please set the type
yourself.

followed by this exception:

WicketMessage: No get method defined for class: class
main.java.domain.publication.Article expression: ISBN

Root cause:

org.apache.wicket.WicketRuntimeException: No get method defined for
class: class main.java.domain.publication.Article expression: ISBN

the weird thing is that model of the form when printed is correct.

here is my .java:

public class AddPublicationPanel extends BasicPanel {

        // services
        @SpringBean
        private IDepartmentAccessService departmentAccessService;
        @SpringBean
        private IPublicationAccessService publicationAccessService;
        @SpringBean
        private IUserAccessService userAccessService;

        // lists used for DropDownChoice
        private List<Short> listYear;
        private List<Byte> listMonth;

        // components
        private Form form;
        private FeedbackPanel feedback;
        private AjaxFallbackButton clear;
        private WebMarkupContainer detailsBook, detailsConferencePaper,
                        detailsTechnicalReport, detailsWorkshop, detailsArticle,
                        detailsBookChapter, detailsCurrent;
        private LoadableDetachableModel book, conferencePaper, technicalReport,
                        workshop, article, bookChapter;
        private FormComponentFeedbackBorder publicationTypeBorder;

        // common fields
        private DropDownChoice publicationType, year, month;
        private TextField title, keywords;
        private AutoCompleteTextFieldUser[] authors;
        private AjaxFallbackLink addAuthor, removeAuthor;
        private TextArea abstractText;
        private ListMultipleChoice departments;
        private CheckBox reproducible, passwordProtected;

        // book details
        private TextField bookISBN, bookSeries, bookEdition, bookVolume,
                        bookPublisherName, bookPublisherAddress;

        // conference paper details
        private TextField conferencePaperBookTitle, conferencePaperPages,
                        conferencePaperPublisherName, 
conferencePaperPublisherAddress,
                        conferencePaperEditors, conferencePaperAddress,
                        conferencePaperSponsors;

        // technical report details
        private DropDownChoice technicalReportType;
        private TextField technicalReportInstitutionName,
                        technicalReportInstitutionAddress;

        // workshop details
        private TextField workshopName, workshopNumber, workshopAddress;

        // article details
        private TextField articleJournalName, articleVolume, articleIssue,
                        articlePages;

        // book chapter details
        private TextField bookChapterTitle, bookChapterISBN, bookChapterSeries,
                        bookChapterEdition, bookChapterVolume, 
bookChapterPublisherName,
                        bookChapterPublisherAddress;

        // custom validators
        private PatternValidator pagesPatternValidator, 
keywordsPatternValidator;

        public AddPublicationPanel() {
                super("block", "Add Publication");

                initPatternValidators();
                initLists();
                initModels();
                initCommon();
                initDetails();
                
                AjaxFormValidatingBehavior.addToAllFormComponents(form, 
"onblur");
        }

        private void initCommon() {
                add((feedback = new 
FeedbackPanel("feedback")).setOutputMarkupId(true));
                add(form = new Form("form", new CompoundPropertyModel(book)) {
                        protected void onSubmit() {

                                setPublicationAuthors();
                                setPublicationKeywords();
                                setPublicationCreationDate();

                                
publicationAccessService.savePublication((IPublication) form
                                                .getModelObject());
                                detailsCurrent.setVisible(false);
                                clearAuthors();

                        }
                });

                // publicationType
                publicationType = new DropDownChoice("publicationType", Arrays
                                .asList(PublicationType.values()), new 
ChoiceRenderer(
                                "displayName", "id"));
                publicationType.setRequired(true);
                publicationType.add(new 
AjaxFormComponentUpdatingBehavior("onchange") {
                        @Override
                        protected void onUpdate(AjaxRequestTarget target) {
                                target.addComponent(feedback);
                                target.addComponent(detailsArticle);
                                target.addComponent(detailsBook);
                                target.addComponent(detailsBookChapter);
                                target.addComponent(detailsConferencePaper);
                                target.addComponent(detailsTechnicalReport);
                                target.addComponent(detailsWorkshop);

                                if (((PublicationType) 
publicationType.getModelObject()) == null) {
                                        detailsCurrent.setVisible(false);
                                } else {
                                        if (((PublicationType) 
publicationType.getModelObject())
                                                        .getId() == 0) {
                                                
replaceDetails(detailsArticle).setModel(
                                                                new 
CompoundPropertyModel(article));
                                        } else {
                                                if (((PublicationType) 
publicationType.getModelObject())
                                                                .getId() == 1) {
                                                        
replaceDetails(detailsBook).setModel(
                                                                        new 
CompoundPropertyModel(book));
                                                } else {
                                                        if (((PublicationType) 
publicationType
                                                                        
.getModelObject()).getId() == 2) {
                                                                
replaceDetails(detailsBookChapter).setModel(
                                                                                
new CompoundPropertyModel(bookChapter));

                                                        } else {
                                                                if 
(((PublicationType) publicationType
                                                                                
.getModelObject()).getId() == 3) {
                                                                        
replaceDetails(detailsConferencePaper)
                                                                                
        .setModel(
                                                                                
                        new CompoundPropertyModel(
                                                                                
                                        conferencePaper));

                                                                } else {
                                                                        if 
(((PublicationType) publicationType
                                                                                
        .getModelObject()).getId() == 4) {
                                                                                
replaceDetails(detailsTechnicalReport)
                                                                                
                .setModel(
                                                                                
                                new CompoundPropertyModel(
                                                                                
                                                technicalReport));

                                                                        } else {
                                                                                
if (((PublicationType) publicationType
                                                                                
                .getModelObject()).getId() == 5) {
                                                                                
        replaceDetails(detailsWorkshop)
                                                                                
                        .setModel(
                                                                                
                                        new CompoundPropertyModel(
                                                                                
                                                        workshop));

                                                                                
}
                                                                        }
                                                                }
                                                        }
                                                }
                                        }
                                }

                        }
                });
                form.add((publicationTypeBorder = new 
FormComponentFeedbackBorder(
                                "publicationTypeBorder")).add(publicationType)
                                .setOutputMarkupId(true));
                // addWithBorder("publicationTypeBorder", form, 
publicationType);

                // title
                addWithBorder("titleBorder", form, new 
TextField("title").setRequired(
                                true).add(StringValidator.maximumLength(128)));
                // year
                form.add(new DropDownChoice("year", listYear));
                // month
                form.add(new DropDownChoice("month", listMonth, new 
ChoiceRenderer() {
                        @Override
                        public Object getDisplayValue(Object object) {
                                return (new 
DateFormatSymbols().getMonths())[((Byte) object)
                                                .intValue()];
                        }
                }));
                // abstractText
                addWithBorder("abstractTextBorder", form, new 
TextArea("abstractText")
                                .add(StringValidator.maximumLength(2048)));
                // reproducible
                form.add(new CheckBox("reproducible"));
                // passwordProtected
                form.add(new CheckBox("passwordProtected"));
                // keywords
                addWithBorder("keywordsBorder", form, new 
TextField("keywords").add(
                                keywordsPatternValidator).add(
                                StringValidator.maximumLength(2048)));

                // authors (internal & external)
                authors = new AutoCompleteTextFieldUser[10];
                for (int i = 0; i < 10; i++) {
                        (authors[i] = new AutoCompleteTextFieldUser("author" + 
i))
                                        .setOutputMarkupId(true)
                                        .setOutputMarkupPlaceholderTag(true);
                        if (i == 0) {
                                authors[i].setRequired(true).setVisible(true);
                                addWithBorder("authorBorder", form, authors[0]);
                        } else {
                                authors[i].setVisible(false);
                                form.add(authors[i]);
                        }
                }

                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
                addWithBorder("departmentsBorder", form, new ListMultipleChoice(
                                "departments", new LoadableDetachableModel() {

                                        @Override
                                        protected Object load() {

                                                return 
departmentAccessService.findAllDepartments();
                                        }

                                }, new ChoiceRenderer("name", 
"id")).setRequired(true));

                // clear button
                form.add((new AjaxFallbackButton("clear", form) {

                        @Override
                        protected void onSubmit(AjaxRequestTarget target, Form 
form) {
                                detailsCurrent.setVisible(false);
                                form.clearInput();
                                clearAuthors();

                                if (target != null) {
                                        target.addComponent(form);
                                        for (AutoCompleteTextFieldUser author : 
authors) {
                                                target.addComponent(author);
                                        }
                                }
                        }

                }).setDefaultFormProcessing(false));

                // trying ajax
                /* new AjaxFormValidatingBehavior(form, "onkeystroke"); */

        }

        private void initModels() {
                book = new LoadableDetachableModel() {

                        @Override
                        protected Object load() {
                                IBook book = new Book();
                                // setting default values
                                book.setYear(new Short((short) 
Calendar.getInstance().get(
                                                Calendar.YEAR)));
                                book.setPublisher(new Publisher());
                                return book;
                        }
                };
                bookChapter = new LoadableDetachableModel() {

                        @Override
                        protected Object load() {
                                IBookChapter bookChapter = new BookChapter();
                                // setting default values
                                bookChapter.setYear(new Short((short) 
Calendar.getInstance()
                                                .get(Calendar.YEAR)));
                                bookChapter.setBookPublisher(new Publisher());
                                return bookChapter;
                        }

                };
                article = new LoadableDetachableModel() {

                        @Override
                        protected Object load() {
                                IArticle article = new Article();
                                // setting default values
                                article.setYear(new Short((short) 
Calendar.getInstance().get(
                                                Calendar.YEAR)));
                                return article;
                        }
                };
                workshop = new LoadableDetachableModel() {

                        @Override
                        protected Object load() {
                                IWorkshop workshop = new Workshop();
                                // setting default values
                                workshop.setYear(new Short((short) 
Calendar.getInstance().get(
                                                Calendar.YEAR)));
                                return workshop;
                        }
                };
                conferencePaper = new LoadableDetachableModel() {

                        @Override
                        protected Object load() {
                                IConferencePaper conferencePaper = new 
ConferencePaper();
                                // setting default values
                                conferencePaper.setYear(new Short((short) 
Calendar
                                                
.getInstance().get(Calendar.YEAR)));
                                conferencePaper.setConferenceBookPublisher(new 
Publisher());

                                return conferencePaper;
                        }
                };
                technicalReport = new LoadableDetachableModel() {

                        @Override
                        protected Object load() {
                                ITechnicalReport technicalReport = new 
TechnicalReport();
                                // setting default values
                                technicalReport.setYear(new Short((short) 
Calendar
                                                
.getInstance().get(Calendar.YEAR)));
                                
technicalReport.setType(TechnicalReportType.PRIMARY_RESEARCH);
                                technicalReport.setInstitution("GUC");
                                technicalReport
                                                .setInstitutionAddress("New 
Cairo City, El Tagamoa El Khames");

                                return technicalReport;
                        }
                };
        }

        private void initDetails() {

                // article
                (detailsArticle = new 
WebMarkupContainer("detailsArticle")).setVisible(
                                
false).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(
                                true);

                addWithBorder("journalNameBorder", detailsArticle, new 
TextField(
                                "journalName") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                setRequired(true);
                                add(StringValidator.maximumLength(128));
                        }
                });
                addWithBorder("volumeBorder", detailsArticle, new TextField(
                                "journalVolume") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(NumberValidator.range(0, Short.MAX_VALUE));
                        }
                });
                addWithBorder("issueBorder", detailsArticle, new TextField(
                                "journalIssue") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(NumberValidator.range(0, Long.MAX_VALUE));
                        }
                });
                addWithBorder("pagesBorder", detailsArticle, new TextField(
                                "journalPages") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(64));
                                add(pagesPatternValidator);
                        }
                });

                // book
                (detailsBook = new 
WebMarkupContainer("detailsBook")).setVisible(false)
                                
.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);

                addWithBorder("ISBNBorder", detailsBook, new TextField("ISBN") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                setRequired(true);
                                add(StringValidator.lengthBetween(10, 13));
                        }
                });
                addWithBorder("seriesBorder", detailsBook, new 
TextField("series") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(128));
                        }
                });
                addWithBorder("editionBorder", detailsBook, new 
TextField("edition") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(64));
                        }
                });
                addWithBorder("volumeBorder", detailsBook, new 
TextField("volume") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(NumberValidator.range(0, Short.MAX_VALUE));
                        }
                });
                addWithBorder("publisherNameBorder", detailsBook, new TextField(
                                "publisher.name") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                setRequired(true);
                                add(StringValidator.maximumLength(128));
                        }
                });
                addWithBorder("publisherAddressBorder", detailsBook, new 
TextField(
                                "publisher.address") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(128));
                        }
                });

                // book chapter
                (detailsBookChapter = new 
WebMarkupContainer("detailsBookChapter"))
                                .setVisible(false).setOutputMarkupId(true)
                                .setOutputMarkupPlaceholderTag(true);

                addWithBorder("bookISBNBorder", detailsBookChapter, new 
TextField(
                                "bookISBN") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                setRequired(true);
                                add(StringValidator.lengthBetween(10, 13));
                        }
                });
                addWithBorder("bookTitleBorder", detailsBookChapter, new 
TextField(
                                "bookTitle") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                setRequired(true);
                                add(StringValidator.maximumLength(128));
                        }
                });
                addWithBorder("seriesBorder", detailsBookChapter, new TextField(
                                "bookSeries") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(128));
                        }
                });
                addWithBorder("editionBorder", detailsBookChapter, new 
TextField(
                                "bookEdition") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(64));
                        }
                });
                addWithBorder("volumeBorder", detailsBookChapter, new TextField(
                                "bookVolume") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(NumberValidator.range(0, Short.MAX_VALUE));
                        }
                });
                addWithBorder("pagesBorder", detailsBookChapter, new TextField(
                                "bookPages") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                setRequired(true);
                                add(StringValidator.maximumLength(64));
                                add(pagesPatternValidator);
                        }
                });
                addWithBorder("publisherNameBorder", detailsBookChapter, new 
TextField(
                                "bookPublisher.name") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                setRequired(true);
                                add(StringValidator.maximumLength(128));
                        }
                });
                addWithBorder("publisherAddressBorder", detailsBookChapter,
                                new TextField("bookPublisher.address") {
                                        @Override
                                        public void onBeforeRender() {
                                                super.onBeforeRender();
                                                
add(StringValidator.maximumLength(128));
                                        }
                                });

                // conference paper
                (detailsConferencePaper = new WebMarkupContainer(
                                
"detailsConferencePaper")).setVisible(false).setOutputMarkupId(
                                true).setOutputMarkupPlaceholderTag(true);

                addWithBorder("conferenceBookTitleBorder", 
detailsConferencePaper,
                                new TextField("conferenceBookTitle") {
                                        @Override
                                        public void onBeforeRender() {
                                                super.onBeforeRender();
                                                setRequired(true);
                                                
add(StringValidator.maximumLength(128));
                                        }
                                });
                addWithBorder("conferenceAddressBorder", detailsConferencePaper,
                                new TextField("conferenceAddress") {
                                        @Override
                                        public void onBeforeRender() {
                                                super.onBeforeRender();
                                                
add(StringValidator.maximumLength(128));
                                        }
                                });
                addWithBorder("pagesBorder", detailsConferencePaper, new 
TextField(
                                "conferenceBookPages") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(64));
                                add(pagesPatternValidator);
                        }
                });
                addWithBorder("editorsBorder", detailsConferencePaper, new 
TextField(
                                "editors") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(256));
                        }
                });
                addWithBorder("sponsorsBorder", detailsConferencePaper, new 
TextField(
                                "sponsors") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(StringValidator.maximumLength(512));
                        }
                });
                addWithBorder("publisherAddressBorder", detailsConferencePaper,
                                new 
TextField("conferenceBookPublisher.address") {
                                        @Override
                                        public void onBeforeRender() {
                                                super.onBeforeRender();
                                                
add(StringValidator.maximumLength(128));
                                        }
                                });
                addWithBorder("publisherNameBorder", detailsConferencePaper,
                                new TextField("conferenceBookPublisher.name") {
                                        @Override
                                        public void onBeforeRender() {
                                                super.onBeforeRender();
                                                setRequired(true);
                                                
add(StringValidator.maximumLength(128));
                                        }
                                });

                // technical report
                (detailsTechnicalReport = new WebMarkupContainer(
                                
"detailsTechnicalReport")).setVisible(false).setOutputMarkupId(
                                true).setOutputMarkupPlaceholderTag(true);

                addWithBorder("typeBorder", detailsTechnicalReport, new 
DropDownChoice(
                                "type", 
Arrays.asList(TechnicalReportType.values()),
                                new ChoiceRenderer("displayName", "id")));
                addWithBorder("institutionBorder", detailsTechnicalReport,
                                new TextField("institution") {
                                        @Override
                                        public void onBeforeRender() {
                                                super.onBeforeRender();
                                                setRequired(true);
                                                
add(StringValidator.maximumLength(128));
                                        }
                                });
                addWithBorder("institutionAddressBorder", 
detailsTechnicalReport,
                                new TextField("institutionAddress") {
                                        @Override
                                        public void onBeforeRender() {
                                                super.onBeforeRender();
                                                
add(StringValidator.maximumLength(128));
                                        }
                                });

                // workshop
                (detailsWorkshop = new WebMarkupContainer("detailsWorkshop"))
                                .setVisible(false).setOutputMarkupId(true)
                                .setOutputMarkupPlaceholderTag(true);

                addWithBorder("workshopTitleBorder", detailsWorkshop, new 
TextField(
                                "workshopTitle") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                setRequired(true);
                                add(StringValidator.maximumLength(128));
                        }
                });
                addWithBorder("workshopNumberBorder", detailsWorkshop, new 
TextField(
                                "workshopNumber") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                add(NumberValidator.range(0, Long.MAX_VALUE));
                        }
                });
                addWithBorder("workshopAddressBorder", detailsWorkshop, new 
TextField(
                                "workshopAddress") {
                        @Override
                        public void onBeforeRender() {
                                super.onBeforeRender();
                                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
                listYear = new ArrayList<Short>();
                for (short i = (short) 
Calendar.getInstance().get(Calendar.YEAR); i
>= 1950; i--) {
                        listYear.add(new Short(i));
                }

                // months
                listMonth = new ArrayList<Byte>();
                for (byte i = 0; i < 12; i++) {
                        listMonth.add(new Byte((byte) i));
                }
        }

        private void initPatternValidators() {
                pagesPatternValidator = new PatternValidator(
                                
"(\\s*\\d+\\s*((\\s*-\\s*\\d+)?\\s*[,;]?\\s*))*");
                keywordsPatternValidator = new PatternValidator(
                                "(\\s*\\w+\\s*,*\\s*)*,*\\s*");
        }

        private void addWithBorder(String id, WebMarkupContainer parent,
                        FormComponent formComponent) {
                final FormComponentFeedbackBorder border = new 
FormComponentFeedbackBorder(
                                id);
                border.setOutputMarkupId(true);
                border.add(formComponent);
                parent.add(border);
                formComponent.add(new 
AjaxFormComponentUpdatingBehavior("onkeyup") {

                        @Override
                        protected void onUpdate(AjaxRequestTarget target) {
                                target.addComponent(feedback);
                                target.addComponent(border);
                        }

                });
        }

        private Form replaceDetails(WebMarkupContainer replacement) {

                detailsCurrent.setVisible(false);
                (detailsCurrent = replacement).setVisible(true);
                return form;
        }

        private void setPublicationAuthors() {
                StringBuilder builder = new StringBuilder();
                for (int i = 0; i < authors.length; i++) {
                        if (!authors[i].isVisible())
                                break;
                        if (authors[i].getModelObject() != null) {
                                IUser user = 
userAccessService.getUserByFullName(authors[i]
                                                .getModelObjectAsString());
                                if (i != 0) {
                                        builder.append("#");
                                }
                                if (user != null) {
                                        builder.append(user.getId());
                                        ((IPublication) form.getModelObject())
                                                        
.addInternalAuthor(user);
                                } else {
                                        
builder.append(authors[i].getModelObjectAsString());
                                }
                        }
                }
                ((IPublication) 
form.getModelObject()).setAuthors(builder.toString());
        }

        private void setPublicationKeywords() {
                String keywords = null;
                if (((IPublication) form.getModelObject()).getKeywords() != 
null) {
                        keywords = ((IPublication) 
form.getModelObject()).getKeywords()
                                        .trim();
                        keywords += (keywords.charAt(keywords.length() - 1) != 
',' ? ","
                                        : "");
                }
                ((IPublication) form.getModelObject()).setKeywords(keywords);
        }

        private void setPublicationCreationDate() {
                ((IPublication) form.getModelObject()).setCreatedOn(new Date());
        }

        private void clearAuthors() {
                for (AutoCompleteTextFieldUser author : authors) {
                        author.clear();
                }
        }

}

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to