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