You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by jar ade <ja...@gmail.com> on 2007/10/21 12:41:16 UTC
replacing panel with form
Hi all,
I´m trying to replace a Panel with a Form when the user clicks a link like so
public void onClick() {
getPage().get("content").replaceWith(new
LoginForm("content", new User()));
}
The old content is a component extending Panel, and the new a
component LoginForm extending Form. I end up with a Runtimeexception
with the message
WicketMessage: Component content must be applied to a tag of type
'form', not '<div id="content5" wicket:id="content"/>'
upon clicking the link. A solution would be to make the LoginForm a
Panel and add a Form to it using
add(new Form()) in which case the replacement works. One panel replaces another.
This usage of Form however, would be at odds with the wicket
documentation ("Using Forms: Subclass wicket.markup.html.form.Form").
Also, the javadoc entry for Component.replaceWith() says that only the
id of the replacing component must be identical (not the type as long
as it is a Component, right?). What am I doing wrong here?
HTML is below
----------------------------------------------------
in Page
<div id="content" wicket:id="content" />
----------------------------------------------------
in old "content" Panel
<wicket:panel>
<div>
static text
</div>
</wicket:panel>
----------------------------------------------------
in replacing form
<form wicket:id="loginform" class="searchsubmit">
<table>
<tr>
<td><span wicket:id="usernamelabel"
wicket:message="value:loginform.usernamelabel"/></td>
<td><input wicket:id="username" id="searchinput"/></td>
</tr>
<tr>
<td><span wicket:id="passwordlabel"
wicket:message="value:loginform.passwordlabel"/></td>
<td><input wicket:id="password" type="password" id="searchinput" /></td>
</tr>
<tr>
<td colspan="2">
<input wicket:id="loginbutton" type="submit" id="searchsubmit" />
</td>
</tr>
</table>
</form>
----------------------------------------------------
Any help is appreciated
*/jakob
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: replacing panel with form
Posted by jar ade <ja...@gmail.com>.
Thanks a lot, I´ll go for the visibility-toggle in this case.
*/
On 10/21/07, Martin Funk <fu...@arcor.de> wrote:
> You are not doing anything really wrong,
>
> its not Component.replaceWith that is complaining but the renderer.
>
> Embedding the Form in a Panel is a reasonable solution, alternatively
> you could add both components and toggle their visibility.
>
> Martin
>
> jar ade schrieb:
> > Hi all,
> >
> > I´m trying to replace a Panel with a Form when the user clicks a link like so
> >
> > public void onClick() {
> > getPage().get("content").replaceWith(new
> > LoginForm("content", new User()));
> > }
> >
> > The old content is a component extending Panel, and the new a
> > component LoginForm extending Form. I end up with a Runtimeexception
> > with the message
> >
> > WicketMessage: Component content must be applied to a tag of type
> > 'form', not '<div id="content5" wicket:id="content"/>'
> >
> >
> > upon clicking the link. A solution would be to make the LoginForm a
> > Panel and add a Form to it using
> >
> > add(new Form()) in which case the replacement works. One panel replaces another.
> >
> > This usage of Form however, would be at odds with the wicket
> > documentation ("Using Forms: Subclass wicket.markup.html.form.Form").
> > Also, the javadoc entry for Component.replaceWith() says that only the
> > id of the replacing component must be identical (not the type as long
> > as it is a Component, right?). What am I doing wrong here?
> >
> > HTML is below
> >
> > ----------------------------------------------------
> > in Page
> >
> > <div id="content" wicket:id="content" />
> > ----------------------------------------------------
> > in old "content" Panel
> >
> > <wicket:panel>
> > <div>
> > static text
> > </div>
> > </wicket:panel>
> > ----------------------------------------------------
> > in replacing form
> >
> > <form wicket:id="loginform" class="searchsubmit">
> > <table>
> > <tr>
> > <td><span wicket:id="usernamelabel"
> > wicket:message="value:loginform.usernamelabel"/></td>
> > <td><input wicket:id="username" id="searchinput"/></td>
> > </tr>
> > <tr>
> > <td><span wicket:id="passwordlabel"
> > wicket:message="value:loginform.passwordlabel"/></td>
> > <td><input wicket:id="password" type="password" id="searchinput" /></td>
> > </tr>
> > <tr>
> > <td colspan="2">
> > <input wicket:id="loginbutton" type="submit" id="searchsubmit" />
> > </td>
> > </tr>
> > </table>
> > </form>
> > ----------------------------------------------------
> > Any help is appreciated
> > */jakob
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: replacing panel with form
Posted by Martin Funk <fu...@arcor.de>.
You are not doing anything really wrong,
its not Component.replaceWith that is complaining but the renderer.
Embedding the Form in a Panel is a reasonable solution, alternatively
you could add both components and toggle their visibility.
Martin
jar ade schrieb:
> Hi all,
>
> I´m trying to replace a Panel with a Form when the user clicks a link like so
>
> public void onClick() {
> getPage().get("content").replaceWith(new
> LoginForm("content", new User()));
> }
>
> The old content is a component extending Panel, and the new a
> component LoginForm extending Form. I end up with a Runtimeexception
> with the message
>
> WicketMessage: Component content must be applied to a tag of type
> 'form', not '<div id="content5" wicket:id="content"/>'
>
>
> upon clicking the link. A solution would be to make the LoginForm a
> Panel and add a Form to it using
>
> add(new Form()) in which case the replacement works. One panel replaces another.
>
> This usage of Form however, would be at odds with the wicket
> documentation ("Using Forms: Subclass wicket.markup.html.form.Form").
> Also, the javadoc entry for Component.replaceWith() says that only the
> id of the replacing component must be identical (not the type as long
> as it is a Component, right?). What am I doing wrong here?
>
> HTML is below
>
> ----------------------------------------------------
> in Page
>
> <div id="content" wicket:id="content" />
> ----------------------------------------------------
> in old "content" Panel
>
> <wicket:panel>
> <div>
> static text
> </div>
> </wicket:panel>
> ----------------------------------------------------
> in replacing form
>
> <form wicket:id="loginform" class="searchsubmit">
> <table>
> <tr>
> <td><span wicket:id="usernamelabel"
> wicket:message="value:loginform.usernamelabel"/></td>
> <td><input wicket:id="username" id="searchinput"/></td>
> </tr>
> <tr>
> <td><span wicket:id="passwordlabel"
> wicket:message="value:loginform.passwordlabel"/></td>
> <td><input wicket:id="password" type="password" id="searchinput" /></td>
> </tr>
> <tr>
> <td colspan="2">
> <input wicket:id="loginbutton" type="submit" id="searchsubmit" />
> </td>
> </tr>
> </table>
> </form>
> ----------------------------------------------------
> Any help is appreciated
> */jakob
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org