Re: [Wicket-user] Schizophrenic Components (that suddenly change their Variation)
either switch panels or add both and override isvisible() on each one-IgorOn 8/2/06, Eelco Hillenius < [EMAIL PROTECTED]> wrote:I haven't read it in detail, but variation is not meant for doing that kind of stuff (though it should work). Rather, use panels andreplacement (switch the panels).EelcoOn 8/2/06, Juergen Donnerstag <[EMAIL PROTECTED] > wrote:> I guess it is because Wicket caches the Markup associated with a> Component. Wicket assumes that the associated Markup does not change> once loaded, except if you change the markup file content itself, > because the cache will be cleared than. I guess I would create two> separate Panels for LoggedIn and LoggedOut and either add() the one or> the other to the container.>> Juergen> > On 8/2/06, Stefan Arentz <[EMAIL PROTECTED]> wrote:> > I have a simple Panel that we call the QuickLogInPanel. This is a> > panel located in a 'side bar'. When the user is not logged in the > > panel shows a simple username/password form. After logging in I want> > to show just some text and a log out button.> >> > So I did this:> >> > public class QuickLogInPanel extends Panel > > {> >public QuickLogInPanel(String string)> >{> >super(string);> >> >MySession session = (MySession) getSession();> >> >if ( session.getUser() == null) {> >add(new LogInForm("logInForm", new> > CompoundPropertyModel(new LogInCommand(;> >} else {> >add(new PageLink("logOutLink", LogOutPage.class));> >}> >}> >> >public String getVariation()> >{> >MySession session = (MySession) getSession();> >> >if ( session.getUser() == null) {> >return "LoggedOut";> >} else {> >return "LoggedIn";> >}> >}> > > >class LogInCommand> >{> >private String login;> >> >public String getLogin()> >{> >return login;> >} > >> >public void setLogin(String login)> >{> >this.login = login;> >}> >> >private String password;> > > >public String getPassword()> >{> >return password;> >}> >> >public void setPassword(String password)> >{ > >this.password = password;> >}> >}> >> >class LogInForm extends Form> >{> >@SpringBean> >private LogInFacade logInFacade; > >> >public LogInForm(String id, IModel model)> >{> >super(id, model);> >> >add(new TextField("login"));> >add(new PasswordTextField("password")); > >> >add(new PageLink("forgotPasswordLink", ForgotPasswordPage.class));> >add(new PageLink("signUpLink", SignUpPage.class));> >} > >> >protected void onSubmit()> >{> >LogInCommand logInCommand = (LogInCommand) getModelObject();> >User user = logInFacade.login( logInCommand.getLogin(),> > logInCommand.getPassword());> >if (user != null) {> >MySession session = (MySession) getSession();> >session.setUser (user);> >setResponsePage(getApplication().getHomePage());> >}> >}> >}> > }> >> > Together with two markup files: > >> > QuickLogInPanel_LoggedIn.html> > QuickLogInPanel_LoggedOut.html> >> > But this gives all sorts of problems during logging in and out.> >> > I get the following error when the user logs in and the page is rendered again: > >> > WicketMessage: Unable to find component with id 'logOutLink' in MarkupContainer> >> > this is probably because the Panel is already instantiated; the> > constructor is not run again of course. > >> > Is there a way to 'reset' the component or to mark it 'dirty' so that> > the parent page will create it again?> >> > The Logout action shows the same kind of behaviour. > >> > I know I can fix this by putting some logic in the owning page and use> > two different kinds of panels, but I think one panel that just figures> > out what to do by itself is more elegant. > >> > S.> >> > -> > Take Surveys. Earn Cash. Influence the Future of IT> > Join SourceForge.net 's Techsay panel and you'll get the chance to share your> > opinions on IT & business topics through brief surveys -- and earn cash> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV> > ___> > Wicket-user mailing list> > Wicket-user@lists.sourceforge.net> > https://lists.sourceforge.net/lists/listinfo/wicket-user> >>> - > Take Surveys. Earn Cash. Influence the Future of IT> Join SourceForge.net's Techsay panel and you'll get the chance to share your> opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DE
Re: [Wicket-user] Schizophrenic Components (that suddenly change their Variation)
I haven't read it in detail, but variation is not meant for doing that kind of stuff (though it should work). Rather, use panels and replacement (switch the panels). Eelco On 8/2/06, Juergen Donnerstag <[EMAIL PROTECTED]> wrote: > I guess it is because Wicket caches the Markup associated with a > Component. Wicket assumes that the associated Markup does not change > once loaded, except if you change the markup file content itself, > because the cache will be cleared than. I guess I would create two > separate Panels for LoggedIn and LoggedOut and either add() the one or > the other to the container. > > Juergen > > On 8/2/06, Stefan Arentz <[EMAIL PROTECTED]> wrote: > > I have a simple Panel that we call the QuickLogInPanel. This is a > > panel located in a 'side bar'. When the user is not logged in the > > panel shows a simple username/password form. After logging in I want > > to show just some text and a log out button. > > > > So I did this: > > > > public class QuickLogInPanel extends Panel > > { > >public QuickLogInPanel(String string) > >{ > >super(string); > > > >MySession session = (MySession) getSession(); > > > >if (session.getUser() == null) { > >add(new LogInForm("logInForm", new > > CompoundPropertyModel(new LogInCommand(; > >} else { > >add(new PageLink("logOutLink", LogOutPage.class)); > >} > >} > > > >public String getVariation() > >{ > >MySession session = (MySession) getSession(); > > > >if (session.getUser() == null) { > >return "LoggedOut"; > >} else { > >return "LoggedIn"; > >} > >} > > > >class LogInCommand > >{ > >private String login; > > > >public String getLogin() > >{ > >return login; > >} > > > >public void setLogin(String login) > >{ > >this.login = login; > >} > > > >private String password; > > > >public String getPassword() > >{ > >return password; > >} > > > >public void setPassword(String password) > >{ > >this.password = password; > >} > >} > > > >class LogInForm extends Form > >{ > >@SpringBean > >private LogInFacade logInFacade; > > > >public LogInForm(String id, IModel model) > >{ > >super(id, model); > > > >add(new TextField("login")); > >add(new PasswordTextField("password")); > > > >add(new PageLink("forgotPasswordLink", > > ForgotPasswordPage.class)); > >add(new PageLink("signUpLink", SignUpPage.class)); > >} > > > >protected void onSubmit() > >{ > >LogInCommand logInCommand = (LogInCommand) getModelObject(); > >User user = logInFacade.login(logInCommand.getLogin(), > > logInCommand.getPassword()); > >if (user != null) { > >MySession session = (MySession) getSession(); > >session.setUser(user); > >setResponsePage(getApplication().getHomePage()); > >} > >} > >} > > } > > > > Together with two markup files: > > > > QuickLogInPanel_LoggedIn.html > > QuickLogInPanel_LoggedOut.html > > > > But this gives all sorts of problems during logging in and out. > > > > I get the following error when the user logs in and the page is rendered > > again: > > > > WicketMessage: Unable to find component with id 'logOutLink' in > > MarkupContainer > > > > this is probably because the Panel is already instantiated; the > > constructor is not run again of course. > > > > Is there a way to 'reset' the component or to mark it 'dirty' so that > > the parent page will create it again? > > > > The Logout action shows the same kind of behaviour. > > > > I know I can fix this by putting some logic in the owning page and use > > two different kinds of panels, but I think one panel that just figures > > out what to do by itself is more elegant. > > > > S. > > > > - > > Take Surveys. Earn Cash. Influence the Future of IT > > Join SourceForge.net's Techsay panel and you'll get the chance to share your > > opinions on IT & business topics through brief surveys -- and earn cash > > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > > ___ > > Wicket-user mailing list > > Wicket-user@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wicket-user > > > > - > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforg
Re: [Wicket-user] Schizophrenic Components (that suddenly change their Variation)
I guess it is because Wicket caches the Markup associated with a Component. Wicket assumes that the associated Markup does not change once loaded, except if you change the markup file content itself, because the cache will be cleared than. I guess I would create two separate Panels for LoggedIn and LoggedOut and either add() the one or the other to the container. Juergen On 8/2/06, Stefan Arentz <[EMAIL PROTECTED]> wrote: > I have a simple Panel that we call the QuickLogInPanel. This is a > panel located in a 'side bar'. When the user is not logged in the > panel shows a simple username/password form. After logging in I want > to show just some text and a log out button. > > So I did this: > > public class QuickLogInPanel extends Panel > { >public QuickLogInPanel(String string) >{ >super(string); > >MySession session = (MySession) getSession(); > >if (session.getUser() == null) { >add(new LogInForm("logInForm", new > CompoundPropertyModel(new LogInCommand(; >} else { >add(new PageLink("logOutLink", LogOutPage.class)); >} >} > >public String getVariation() >{ >MySession session = (MySession) getSession(); > >if (session.getUser() == null) { >return "LoggedOut"; >} else { >return "LoggedIn"; >} >} > >class LogInCommand >{ >private String login; > >public String getLogin() >{ >return login; >} > >public void setLogin(String login) >{ >this.login = login; >} > >private String password; > >public String getPassword() >{ >return password; >} > >public void setPassword(String password) >{ >this.password = password; >} >} > >class LogInForm extends Form >{ >@SpringBean >private LogInFacade logInFacade; > >public LogInForm(String id, IModel model) >{ >super(id, model); > >add(new TextField("login")); >add(new PasswordTextField("password")); > >add(new PageLink("forgotPasswordLink", ForgotPasswordPage.class)); >add(new PageLink("signUpLink", SignUpPage.class)); >} > >protected void onSubmit() >{ >LogInCommand logInCommand = (LogInCommand) getModelObject(); >User user = logInFacade.login(logInCommand.getLogin(), > logInCommand.getPassword()); >if (user != null) { >MySession session = (MySession) getSession(); >session.setUser(user); >setResponsePage(getApplication().getHomePage()); >} >} >} > } > > Together with two markup files: > > QuickLogInPanel_LoggedIn.html > QuickLogInPanel_LoggedOut.html > > But this gives all sorts of problems during logging in and out. > > I get the following error when the user logs in and the page is rendered > again: > > WicketMessage: Unable to find component with id 'logOutLink' in > MarkupContainer > > this is probably because the Panel is already instantiated; the > constructor is not run again of course. > > Is there a way to 'reset' the component or to mark it 'dirty' so that > the parent page will create it again? > > The Logout action shows the same kind of behaviour. > > I know I can fix this by putting some logic in the owning page and use > two different kinds of panels, but I think one panel that just figures > out what to do by itself is more elegant. > > S. > > - > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > ___ > Wicket-user mailing list > Wicket-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-user > - Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV ___ Wicket-user mailing list Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user