You can't call remove from page map from Inside the page constructor!!
it isn't even IN the pagemap yet because the page is not yet constructed
and why do you think you do? why would you remove a page from the pagemap
when you still construct it and want to use it also again as a request page
(i see links on in...)

public class WelcomePage extends BasePage
{
    public WelcomePage()
    {
        add(new Link("RegistrationFormLink"){
            public void onClick()
            {
                setResponsePage(new RegisterationPage());
                *getPageMap().remove(this);*
            }
        });
    }
}

above code should work i hope. The only thing i don't know currently if it
works correctly
is that when you call remove maybe the detach phase of the page is then
putting it back in
(Matej? do will support this still with all the new changes??)

johan



On 10/27/07, Suad AlShamsi <[EMAIL PROTECTED]> wrote:
>
> I am using wicket 1.3 bita4 and all what really need is whenever the user
> is navigating using the browser back and forward button is to see page
> expired.
> Here is snap of my code. Can you please tell me what am doing wrong
>
> *Page 1 (Home Page)
> *public class WelcomePage extends BasePage
> {
>     public WelcomePage()
>     {
>         add(new Link("RegistrationFormLink"){
>             public void onClick()
>             {
>                 setResponsePage(new RegisterationPage());
>             }
>         });
>         *this.getPageMap().remove(this);*
>     }
> }
>
> *Page 2
> *public class RegisterationPage extends BasePage
> {
>     private Individual user;
>     public RegisterationPage()
>     {
>         user = new Individual();
>         add(new RegisterationForm("regForm", new
> CompoundPropertyModel(user)));
>
> *        this.getPageMap().remove(this);*
>     }
>     private class RegisterationForm extends Form
>     {
>
>         public RegisterationForm(String name, CompoundPropertyModel model)
>         {
>             super(name, model);
>
>             //Form Fields
>            *** Adding some fields to the form
>
>         public void onSubmit()
>         {
>                  ConfirmationPage confPage = new ConfirmationPage(user);
>                 setResponsePage(confPage);
> *                this.getPage().getPageMap().remove(this.getPage());*
>         }
>     }
> }
>
> *Page 3*
>
> public class ConfirmationPage extends BasePage
> {
>     private Individual user;
>
>     public ConfirmationPage(Individual ind)
>     {
>         add(new InputForm("confForm", new CompoundPropertyModel(user));
> *        this.getPageMap().remove(this);*
>     }
>     private class InputForm extends Form
>     {
>         public InputForm(String name, CompoundPropertyModel model)
>         {
>             super(name, model);
>
>             //Form Fields
>             ***adding Some fields
>         }
>         public void onSubmit()
>         {
>                 setResponsePage(new SucessPage());
> *                this.getPage().getPageMap().remove(this.getPage());*
>         }
>     }
> }
> *Page 4*
> public class SucessPage extends BasePage
> {
>     public SucessPage()
>     {
>         //Construct form feedback, and link panel and hook them up
>         final FeedbackPanel feedback = new FeedbackPanel("feedback");
>         add(feedback);
>
> *        this.getPageMap().remove(this);*
>     }
> }
>
>
> Regards,
> Suad
> *
> *
> Johan Compagner wrote:
>
> what do you mean you added the above call to all the pages?
> How do you do that?
>
>
> On 10/26/07, Suad AlShamsi <[EMAIL PROTECTED]> wrote:
> >
> >  --> PageMap.clear should work but it is a bit strange call to do. Why
> > do you want
> >         to delete all pages? But what do you say nothing happens? What
> > do you expect to see happening?
> >
> >        These pages are public pages used for user registration which
> > takes number of steps to complete. I dont want the user to use the back
> > button to reset any of the previous forms. I want the page to expired in
> > case the user is using the back button. But the pages are not getting
> > expired.
> >
> >
> > Page.getPageMap().remove(Page)
> >
> > I added the above call to all the pages but it only expires the first
> > page.
> >
> > Suad
> >
> >
> > Johan Compagner wrote:
> >
> > PageMap.clear should work but it is a bit strange call to do. Why do you
> > want
> > to delete all pages? But what do you say nothing happens? What do you
> > expect to see happening?
> >
> >
> > And with Page.remove() is the wrong call, that is the default call to
> > remove a component from its parent
> > Maybe we should implement that that it call the pagemap and removes
> > itself
> > (but it is final at the moment)
> >
> > Page.getPageMap().remove(Page)
> >
> > johan
> >
> >
> > On 10/26/07, Suad AlShamsi <[EMAIL PROTECTED] > wrote:
> > >
> > > Removing the page is throwing the following exception:
> > >
> > > Caused by: java.lang.IllegalStateException : Cannot remove [Page class
> > > =
> > > com.individual.registration.RegisterationPage, id = 6, version = 0]
> > > from
> > > null parent!
> > >    at org.apache.wicket.Component.remove(Component.java:1896)
> > >
> > > What I have is 3 pages. Page 1 has a form component, Page 2 has
> > > another
> > > form components, and Page 3 is has a label component. After submitting
> > > the form on page 1 the user will be directed to page 2 and after
> > > submitting the form the user will  be directed to page 3. What I want
> > > to
> > > prevent the user from using the browser back button after submitting
> > > the
> > > form. The user should get the page has been expired.
> > >
> > > I tried getPageMap().clear(); after setResponsePage(page); in
> > > onSubmit()
> > > but nothing happen. Then I tried getPage().remove(); I got the
> > > exception
> > > mentioned earlier. Please help me.
> > >
> > > Regards,
> > > Suad
> > >
> > >
> > > Johan Compagner wrote:
> > > > call remove page then the page is gone and can't be reconstructed
> > > anymore
> > > > Ofcourse people can still use the back button (if the url did change
> > > from
> > > > the first to the second page)
> > > > and when they do that they will get a page expired.
> > > > Or maybe on the second page you have some javascript that clears the
> > > window
> > > > history somehow.
> > > >
> > > > johan
> > > >
> > > >
> > > >
> > > > On 10/25/07, Suad AlShamsi <[EMAIL PROTECTED]> wrote:
> > > >
> > > >> Your right, actually what I need is to stop the browser back
> > > button, which
> > > >> means I need to disable the default second cache, writting to the
> > > file
> > > >> system. How can I do so.
> > > >>
> > > >> Another question, what is a temporary session, how can been
> > > created, when
> > > >> to use it?
> > > >>
> > > >> Johan Compagner wrote:
> > > >>
> > > >> you go to another page so the previous page is not in the session
> > > anymore
> > > >> (wicket 1.3)
> > > >>
> > > >>
> > > >>
> > > >> On 10/24/07, Suad AlShamsi <[EMAIL PROTECTED] > wrote:
> > > >>
> > > >>> Hi All,
> > > >>>    After submitting a form the input data will be persisted in the
> > >
> > > >>> database and the user  will be directed to another page. How can I
> > > clear
> > > >>>
> > > >>> the input data from the session?!
> > > >>>
> > > >>>
> > > ---------------------------------------------------------------------
> > > >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > >>> For additional commands, e-mail: [EMAIL PROTECTED]
> > > >>>
> > > >>>
> > > >>>
> > > >>
> > > >
> > > >
> > >
> > >
> >
> >
>
>

Reply via email to