I think I'm getting it now. The Form needs to be embedded in a panel for the type of inclusion that I'm interested in.
I created a CnavFormPanel.java and changed CnavForm.html to CnavFormPanel.html. I left CnavForm.java alone. In CnavModify.java I removed this Form form = new CnavForm("cnavFormArea"); add(form); And added this add(new CnavFormPanel("cnavFormArea")); That works. Thanks for your help. Daniel On Wed, Jul 17, 2013 at 10:07 AM, Daniel Watrous <dwmaill...@gmail.com>wrote: > I can make it work if I put the markup from CnavForm.html directly into > CnavModify, but the form is not as reusable then. I would have to duplicate > the markup for other pages that use the same form... > > Dnaiel > > > On Wed, Jul 17, 2013 at 9:55 AM, Daniel Watrous <dwmaill...@gmail.com>wrote: > >> That's what I tried to do. I created >> CnavForm.java and CnavForm.html. In the latter file I have this >> <wicket:panel> >> <form wicket:id="cnavForm"...> >> // form details >> </form> >> </wicket:panel> >> >> Then I have CnavModify.java and CnavModify.html. You already see what I >> have in CnavModify.java from my last email. My CnavModify.html has this. >> <wicket:extend> >> <span wicket:id="cnavFormArea">Here's the form</span> >> </wicket:extend> >> >> Rather than render I'm getting this error: >> Last cause: Component [cnavFormArea] (path = [0:cnavFormArea]) must be >> applied to a tag of type [form], not: '<span wicket:id="cnavFormArea" >> id="cnavFormArea3">' (line 0, column 0) >> >> I'll keep trying and report back when I figure it out. >> >> Daniel >> >> >> On Tue, Jul 16, 2013 at 10:50 PM, Paul Bors <p...@bors.ws> wrote: >> >>> Wicket is a MVC component driven framework similar to Swing. >>> In short, what you want to do is create your own Panel with that form >>> file >>> of yours and add it to another Panel as a child. >>> >>> See chapter 4 "Keeping control over HTML" of the Wicket Free Guide at: >>> http://code.google.com/p/wicket-guide/ >>> >>> Also available from under the Learn section as the Books link on the >>> right >>> side navigation section on Wicket's home page at: >>> http://wicket.apache.org/learn/books/ >>> >>> ~ Thank you, >>> Paul Bors >>> >>> -----Original Message----- >>> From: Daniel Watrous [mailto:dwmaill...@gmail.com] >>> Sent: Tuesday, July 16, 2013 7:13 PM >>> To: users@wicket.apache.org >>> Subject: Re: Form questions >>> >>> Thanks Paul and Sven. I got the form to work and available in the >>> onSubmit >>> handler. >>> >>> Now I'm interested in splitting the form out into it's one file. So I >>> created a class that has nothing more than the form, but I'm not sure >>> how to >>> include this into a page. >>> >>> In my class I do this: >>> >>> public class CnavModify extends ConsoleBasePage { >>> >>> public CnavModify(PageParameters parameters) { >>> super(parameters); >>> >>> Form form = new CnavForm("cnavFormArea"); >>> add(form); >>> } >>> } >>> >>> My CnavModify obviously extends a base page. What do I put inside the >>> <wicket:extend> tag to have the form render? >>> >>> Daniel >>> >>> >>> On Tue, Jul 16, 2013 at 12:00 AM, Sven Meier <s...@meiers.net> wrote: >>> >>> > Hi, >>> > >>> > >>> > Some problems I can't figure out. The code to create the button >>> > complains >>> >> that it requires a CnavUrl but gets back a String. >>> >> >>> >> add(new Button("publish", model) { >>> >> @Override >>> >> public void onSubmit() { >>> >> CnavUrl cnavUrl = (CnavUrl) getModelObject(); >>> >> System.out.println("publish"); >>> >> } >>> >> }); >>> >> >>> > >>> > a Button always has a IModel<String> to fill the value attribute. Note >>> > that in #onSubmit() you're getting the model object of the button, not >>> > of your form. >>> > You can write: >>> > >>> > add(new Button("publish", model) { >>> >> @Override >>> >> public void onSubmit() { >>> >> CnavUrl cnavUrl = (CnavUrl) >>> MyForm.this.getModelObject(); >>> >> System.out.println("publish"); >>> >> } >>> >> }); >>> >> >>> > >>> > Using generic types in your code should help you. >>> > >>> > Sven >>> > >>> > >>> > >>> > On 07/15/2013 11:41 PM, Daniel Watrous wrote: >>> > >>> >> Hello, >>> >> >>> >> I'm interested in creating a single Form that will accommodate the >>> >> following use cases >>> >> 1) display blank for creating new records >>> >> 2) pre-populate for editing existing records >>> >> 3) map submitted values on to an existing domain object >>> >> 4) accommodate two actions, Save Draft -or- Publish >>> >> >>> >> I'm following Wicket in Action and within my Form constructor I >>> >> create my model, like this >>> >> >>> >> CnavUrl cnavUrl = new BasicCnavUrl(); >>> >> IModel model = new Model((Serializable) cnavUrl); >>> >> setModel(model); >>> >> >>> >> I then use PropertyModel >>> >> >>> >> add(new TextField("url", new PropertyModel(cnavUrl, >>> >> "url"))); >>> >> >>> >> For the two actions, I'm creating the Button objects like this >>> >> >>> >> add(new Button("publish", model) { >>> >> @Override >>> >> public void onSubmit() { >>> >> CnavUrl cnavUrl = (CnavUrl) getModelObject(); >>> >> System.out.println("publish"); >>> >> } >>> >> }); >>> >> >>> >> Some problems I can't figure out. The code to create the button >>> >> complains that it requires a CnavUrl but gets back a String. >>> >> >>> >> It seems that a new BasicCnavUrl is created once with the Form. What >>> >> happens on subsequent calls? Can I always expect my model to have the >>> >> data from the current form submission? >>> >> >>> >> Is there a best way to incorporate the idea of an edit, where the >>> >> model is pre-populated from a data source and pre-fills the Form >>> fields? >>> >> >>> >> Thanks, >>> >> Daniel >>> >> >>> >> >>> > >>> > ------------------------------**------------------------------**------ >>> > --- To unsubscribe, e-mail: >>> > users-unsubscribe@wicket.**apache.org<users-unsubscribe@wicket.apache. >>> > org> For additional commands, e-mail: users-h...@wicket.apache.org >>> > >>> > >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> >