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
>>>
>>>
>>
>

Reply via email to