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