You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Andre Schütz <wi...@faustas.de> on 2012/07/02 23:45:30 UTC

Model is not created

Hello,

I have a problem with the creation of a model in one of my pages.
It works as follows:

I have a link that uses setResponsePage(new MyPage(parameters)) on the click
with parameters as PageParameters.
At the MyPage site, the constructor creates a:
IModel<MyModel> model = new IModel<MyModel>() {
  public void setObject ..
  public MyModel getObject..
}

This variable is used to create a CompoundPropertyModel for a Form.

The first time when I click on my link to the MyPage site, everything
is fine. At the second time, the MyModel variable is not empty. The
variable is filled with the selected values from the first time when
I clicked on the link to the MyPage site.

I do not understand this behavior. Normally, the MyModel variable
should be empty and not filled with the last selection. 

Has someone an idea?

Thanks,
Andre

-- 
Andre Schütz <wi...@faustas.de>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Model is not created

Posted by Andre Schütz <wi...@faustas.de>.
Thanks for the answer. Do you see any mistakes in my code
that can be the reason for my problems?

On Wed, 4 Jul 2012 21:20:31 +0200
Martin Grigorov <mg...@apache.org> wrote:

> On Wed, Jul 4, 2012 at 9:14 PM, Andre Schütz <wi...@faustas.de> wrote:
> > I found out that I get the same pageID in both
> > browsers for the MyFormPage. Should the pageID
> > not be different when I open this site in two
> > different browsers?
> 
> No. Page id is session scoped.
> 
> >
> > Thanks,
> > Andre
> >
> > On Wed, 4 Jul 2012 19:38:28 +0200
> > Andre Schütz <wi...@faustas.de> wrote:
> >
> >> No idea? Anybody?
> >>
> >> On Tue, 3 Jul 2012 22:50:04 +0200
> >> Andre Schütz <wi...@faustas.de> wrote:
> >>
> >> > Hello,
> >> >
> >> > here is an abstract code example of my problem with my application.
> >> >
> >> > ####################
> >> > # StartPage
> >> > ####################
> >> > class StartPage extends WebPage {
> >> >   public StartPage(PageParameters parameters) {
> >> >     add(new SearchForm("searchForm", parameters));
> >> >   }
> >> >
> >> >   private class SearchForm extends StatelessForm {
> >> >     public SearchForm(String id, final PageParameters params) {
> >> >       super(id);
> >> >       init();
> >> >     }
> >> >
> >> >     private void init() {
> >> >       Button startButton = new Button("button_search") {
> >> >         @Override
> >> >         public void onSubmit() {
> >> >           PageParamerters p = new PageParameters();
> >> >           // some additional checks with the parameters
> >> >           ....
> >> >           setResponsePage(MyFormPage.class, p);
> >> >         }
> >> >       }
> >> >     }
> >> >   }
> >> > }
> >> >
> >> > #################
> >> > # MyFormPage
> >> > #################
> >> > class MyFormPage extends WebPage {
> >> >   public MyFormPage(PageParameters parameters) {
> >> >     super(parameters);
> >> >     Model<MySearchModel> model = new Model<MySearchModel>() {
> >> >       MySearchModel msm = new MySearchModel();
> >> >
> >> >       @Override
> >> >       public MySearchModel getObject() {
> >> >         return msm;
> >> >       }
> >> >
> >> >       @Override
> >> >       public void setObject(MySearchModel newModel) {
> >> >         this.msm = newModel;
> >> >       }
> >> >     }
> >> >
> >> >     CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
> >> >     add(new AdvancedSearchForm("asForm", cpm));
> >> >   }
> >> >
> >> >   private class AdvancedSearchForm extends StatelessForm<MySearchModel> {
> >> >     private String name = null;
> >> >
> >> >     public AdvancedSearchForm (String id, IModel<MySearchModel> model) {
> >> >       super(id, model);
> >> >       init(model);
> >> >     }
> >> >
> >> >     private void init(IModel<MySearchModel> model) {
> >> >       IModel<List<String>> classes = new LoadableDetachableModel<List<String>>() {
> >> >         @Override
> >> >         public List<String> load() {
> >> >           List<String> classes = HelperClass.getClasses();
> >> >           Collections.sort(classes);
> >> >           return classes;
> >> >         }
> >> >       }
> >> >
> >> >       IChoiceRenderer<Object> rendererClasses = new IChoiceRenderer<Object>() {
> >> >         public Object getDisplayValue(Object obj) {
> >> >           return obj;
> >> >         }
> >> >
> >> >         public String getIdValue(Object obj, int index) {
> >> >           return obj.toString();
> >> >         }
> >> >       };
> >> >       CheckBoxMultipleChoice<String> classesChoice =
> >> >                     new CheckBoxMultipleChoice<String>("classes",
> >> >                             classes,
> >> >                             rendererClasses);
> >> >       add(classesChoice);
> >> >
> >> >       TextField<String> tf = new TextField<String>("name", new PropertyModel<String>(this, "name"));
> >> >       add(tf);
> >> >
> >> >       add(new Button("searchbutton_search") {
> >> >         @Override
> >> >         public void onSubmit() {
> >> >           makeSubmit();
> >> >         }
> >> >       });
> >> >     }
> >> >
> >> >     /**
> >> >      * Do the submit and got to the response page
> >> >      */
> >> >     private void makeSubmit() {
> >> >       MySession s = (MySession)getSession();
> >> >       MySearchModel modelObject = this.getModelObject();
> >> >
> >> >       if (!s.mySearchModelExists(modelObject.hashCode())) {
> >> >         s.setMySearchModel(modelObject);
> >> >       }
> >> >
> >> >       PageParameters p = new PageParameters();
> >> >       // following method creates parameters from the model
> >> >       p = MyParameterHelper.preparePageParameters(p, modelObject);
> >> >       setResponsePage(MyFinalPage.class, p);
> >> >     }
> >> >   }
> >> > }
> >> >
> >> > ####################
> >> > # MySearchModel
> >> > ####################
> >> >
> >> > public class SearchModel implements Serializable {
> >> >   private String name = null;
> >> >   private List<String> classes = null;
> >> >
> >> >   public void setName(String newName) {
> >> >     name = newName;
> >> >   }
> >> >
> >> >   public void setClasses(List<String> newClasses) {
> >> >     classes = newClasses;
> >> >   }
> >> >
> >> >   public String getName() {
> >> >     return name;
> >> >   }
> >> >
> >> >   public List<String> getClasses() {
> >> >     return classes;
> >> >   }
> >> > }
> >> >
> >> > The process:
> >> >
> >> > (0) I open the Opera Browser.
> >> > (1) I click on the button of the StatelessForm (SearchForm) in the StartPage class.
> >> > (2) The MyFormPage site is displayed.
> >> > (3) I select some classes and click the button in the AdvancedSearchForm.
> >> > (4) The MyFinalPage site is displayed.
> >> > (5) I open the Firefox Browser.
> >> > (6) I see the StartPage and click the button in the SearchForm.
> >> > (7) The MyFormPage is displayed and the classes from step (3) are selected.
> >> > (8) Additionally, I added a System.out.println(model.toString) before the line:
> >> > CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
> >> > and looked into the Catalino.out logs. You can see that this is directly after the
> >> > initilization of the: Model<MySearchModel> model = new Model<MySearchModel>()
> >> > -> the logs tell me that the classes from step (3) are in the model
> >> > => You can see in the model above that the classes are initialized with null.
> >> >
> >> > Puh.
> >> > This is my problem. I hope that this code example gives a good imagination
> >> > of my problem.
> >> > I do not know why the classes from step 3 are in the model after a new initialization.
> >> >
> >> > I would be very thankful for a solution.
> >> >
> >> > Thanks,
> >> > Andre
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > On Tue, 3 Jul 2012 20:16:13 +0200
> >> > Andre Schütz <wi...@faustas.de> wrote:
> >> >
> >> > > There is one important information that I had forgotten to
> >> > > mention. The link on my start page is not a link. It is a button
> >> > > from within a form.
> >> > >
> >> > > Andre
> >> > >
> >> > > On Tue,  3 Jul 2012 11:41:36 +0200 (CEST)
> >> > > wicket@faustas.de wrote:
> >> > >
> >> > > > Hello,
> >> > > >
> >> > > > thanks for the answers. At the moment I am not able to access my code but let
> >> > > > me explain the code in detail and give you some additional examples. I think
> >> > > > the idea with the stateful behavior could be right but I do not understand the
> >> > > > reason.
> >> > > >
> >> > > > In detail.
> >> > > >
> >> > > > - I have a starting page where a Link is constructed that depending on the available
> >> > > > PageParameters links to the second page with or without PageParameters:
> >> > > >
> >> > > > p.. PageParameters
> >> > > >
> >> > > > setResponsePage(MyPage2.class, p) or setResponsePage(MyPage2.class) or
> >> > > >
> >> > > > - After clicking the link on the starting page, the MyPage2 will be opened and
> >> > > > the constructor adds the elements to the page. A Form will be added and gets
> >> > > > a Model that is created in the constructor:
> >> > > >
> >> > > > MyModel model = new MyModel();
> >> > > >
> >> > > > The MyModel has two fields.
> >> > > > class MyModel {
> >> > > >   private String text;
> >> > > >   private List<String> classes;
> >> > > >   public void setText ..
> >> > > >   public void setClasses...
> >> > > >   public String getText ...
> >> > > >   public List<String> getClasses...
> >> > > > }
> >> > > >
> >> > > > The "classes" field is pre-filled with 3 entries in the MyModel class.
> >> > > >
> >> > > > Before the end of the constructor, my Form is added with:
> >> > > > add(new MyForm("id", new CompoundPropertyModel(model)));
> >> > > >
> >> > > > When I submit the form, the MyPage3 is opened and the values from
> >> > > > the MyForm are used.
> >> > > >
> >> > > > When I click back to my starting page and click on the link to MyPage2,
> >> > > > the selected values from the first click to this page are filled in the
> >> > > > MyModel. I printed the values of MyModel directly after the line:
> >> > > > MyModel model = new MyModel()
> >> > > > Normally, the pre-filled values should be in the classes variable. BUT ...
> >> > > > I have the selected values from the first call of the MyPage2.
> >> > > > That's my miracle :)
> >> > > >
> >> > > > Thanks for any additional help
> >> > > > Andre
> >> > > >
> >> > > > ----- Original Message -----
> >> > > > From: mgrigorov@apache.org
> >> > > > To: users@wicket.apache.org
> >> > > > Date: 03.07.2012 07:44:54
> >> > > > Subject: Re: Model is not created
> >> > > >
> >> > > >
> >> > > > > On Mon, Jul 2, 2012 at 11:45 PM, Andre Schütz <wi...@faustas.de> wrote:
> >> > > > >> Hello,
> >> > > > >>
> >> > > > >> I have a problem with the creation of a model in one of my pages.
> >> > > > >> It works as follows:
> >> > > > >>
> >> > > > >> I have a link that uses setResponsePage(new MyPage(parameters)) on the click
> >> > > > >
> >> > > > > I'd recommend to use setResponsePage(MyPage.class, parameters) instead
> >> > > > > in this case. This way you will have a nice looking url and the page
> >> > > > > may stay stateless if there are no stateful components/behaviors in
> >> > > > > it.
> >> > > > > If you know the parameters earlier then you can even use
> >> > > > > BookmarkablePageLink("id", MyPage.class, parameters) - this will save
> >> > > > > you a http redirect.
> >> > > > >
> >> > > > >> with parameters as PageParameters.
> >> > > > >> At the MyPage site, the constructor creates a:
> >> > > > >> IModel<MyModel> model = new IModel<MyModel>() {
> >> > > > >>   public void setObject ..
> >> > > > >>   public MyModel getObject..
> >> > > > >> }
> >> > > > >>
> >> > > > >> This variable is used to create a CompoundPropertyModel for a Form.
> >> > > > >>
> >> > > > >> The first time when I click on my link to the MyPage site, everything
> >> > > > >> is fine. At the second time, the MyModel variable is not empty. The
> >> > > > >> variable is filled with the selected values from the first time when
> >> > > > >> I clicked on the link to the MyPage site.
> >> > > > >>
> >> > > > >> I do not understand this behavior. Normally, the MyModel variable
> >> > > > >> should be empty and not filled with the last selection.
> >> > > > >>
> >> > > > >> Has someone an idea?
> >> > > > >>
> >> > > > >> Thanks,
> >> > > > >> Andre
> >> > > > >>
> >> > > > >> --
> >> > > > >> Andre Schütz <wi...@faustas.de>
> >> > > > >>
> >> > > > >> ---------------------------------------------------------------------
> >> > > > >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >> > > > >> For additional commands, e-mail: users-help@wicket.apache.org
> >> > > > >>
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > > --
> >> > > > > Martin Grigorov
> >> > > > > jWeekend
> >> > > > > Training, Consulting, Development
> >> > > > > http://jWeekend.com
> >> > > > >
> >> > > > > ---------------------------------------------------------------------
> >> > > > > 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
> >> > >
> >> > >
> >> > > --
> >> > > Andre Schütz <wi...@faustas.de>
> >> > >
> >> > > ---------------------------------------------------------------------
> >> > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >> > > For additional commands, e-mail: users-help@wicket.apache.org
> >> >
> >> >
> >> > --
> >> > Andre Schütz <wi...@faustas.de>
> >> >
> >> > ---------------------------------------------------------------------
> >> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >> > For additional commands, e-mail: users-help@wicket.apache.org
> >>
> >>
> >> --
> >> Andre Schütz <wi...@faustas.de>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >> For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
> > --
> > Andre Schütz <wi...@faustas.de>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> 
> 
> 
> -- 
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org


-- 
Andre Schütz <wi...@faustas.de>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Model is not created

Posted by Martin Grigorov <mg...@apache.org>.
On Wed, Jul 4, 2012 at 9:14 PM, Andre Schütz <wi...@faustas.de> wrote:
> I found out that I get the same pageID in both
> browsers for the MyFormPage. Should the pageID
> not be different when I open this site in two
> different browsers?

No. Page id is session scoped.

>
> Thanks,
> Andre
>
> On Wed, 4 Jul 2012 19:38:28 +0200
> Andre Schütz <wi...@faustas.de> wrote:
>
>> No idea? Anybody?
>>
>> On Tue, 3 Jul 2012 22:50:04 +0200
>> Andre Schütz <wi...@faustas.de> wrote:
>>
>> > Hello,
>> >
>> > here is an abstract code example of my problem with my application.
>> >
>> > ####################
>> > # StartPage
>> > ####################
>> > class StartPage extends WebPage {
>> >   public StartPage(PageParameters parameters) {
>> >     add(new SearchForm("searchForm", parameters));
>> >   }
>> >
>> >   private class SearchForm extends StatelessForm {
>> >     public SearchForm(String id, final PageParameters params) {
>> >       super(id);
>> >       init();
>> >     }
>> >
>> >     private void init() {
>> >       Button startButton = new Button("button_search") {
>> >         @Override
>> >         public void onSubmit() {
>> >           PageParamerters p = new PageParameters();
>> >           // some additional checks with the parameters
>> >           ....
>> >           setResponsePage(MyFormPage.class, p);
>> >         }
>> >       }
>> >     }
>> >   }
>> > }
>> >
>> > #################
>> > # MyFormPage
>> > #################
>> > class MyFormPage extends WebPage {
>> >   public MyFormPage(PageParameters parameters) {
>> >     super(parameters);
>> >     Model<MySearchModel> model = new Model<MySearchModel>() {
>> >       MySearchModel msm = new MySearchModel();
>> >
>> >       @Override
>> >       public MySearchModel getObject() {
>> >         return msm;
>> >       }
>> >
>> >       @Override
>> >       public void setObject(MySearchModel newModel) {
>> >         this.msm = newModel;
>> >       }
>> >     }
>> >
>> >     CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
>> >     add(new AdvancedSearchForm("asForm", cpm));
>> >   }
>> >
>> >   private class AdvancedSearchForm extends StatelessForm<MySearchModel> {
>> >     private String name = null;
>> >
>> >     public AdvancedSearchForm (String id, IModel<MySearchModel> model) {
>> >       super(id, model);
>> >       init(model);
>> >     }
>> >
>> >     private void init(IModel<MySearchModel> model) {
>> >       IModel<List<String>> classes = new LoadableDetachableModel<List<String>>() {
>> >         @Override
>> >         public List<String> load() {
>> >           List<String> classes = HelperClass.getClasses();
>> >           Collections.sort(classes);
>> >           return classes;
>> >         }
>> >       }
>> >
>> >       IChoiceRenderer<Object> rendererClasses = new IChoiceRenderer<Object>() {
>> >         public Object getDisplayValue(Object obj) {
>> >           return obj;
>> >         }
>> >
>> >         public String getIdValue(Object obj, int index) {
>> >           return obj.toString();
>> >         }
>> >       };
>> >       CheckBoxMultipleChoice<String> classesChoice =
>> >                     new CheckBoxMultipleChoice<String>("classes",
>> >                             classes,
>> >                             rendererClasses);
>> >       add(classesChoice);
>> >
>> >       TextField<String> tf = new TextField<String>("name", new PropertyModel<String>(this, "name"));
>> >       add(tf);
>> >
>> >       add(new Button("searchbutton_search") {
>> >         @Override
>> >         public void onSubmit() {
>> >           makeSubmit();
>> >         }
>> >       });
>> >     }
>> >
>> >     /**
>> >      * Do the submit and got to the response page
>> >      */
>> >     private void makeSubmit() {
>> >       MySession s = (MySession)getSession();
>> >       MySearchModel modelObject = this.getModelObject();
>> >
>> >       if (!s.mySearchModelExists(modelObject.hashCode())) {
>> >         s.setMySearchModel(modelObject);
>> >       }
>> >
>> >       PageParameters p = new PageParameters();
>> >       // following method creates parameters from the model
>> >       p = MyParameterHelper.preparePageParameters(p, modelObject);
>> >       setResponsePage(MyFinalPage.class, p);
>> >     }
>> >   }
>> > }
>> >
>> > ####################
>> > # MySearchModel
>> > ####################
>> >
>> > public class SearchModel implements Serializable {
>> >   private String name = null;
>> >   private List<String> classes = null;
>> >
>> >   public void setName(String newName) {
>> >     name = newName;
>> >   }
>> >
>> >   public void setClasses(List<String> newClasses) {
>> >     classes = newClasses;
>> >   }
>> >
>> >   public String getName() {
>> >     return name;
>> >   }
>> >
>> >   public List<String> getClasses() {
>> >     return classes;
>> >   }
>> > }
>> >
>> > The process:
>> >
>> > (0) I open the Opera Browser.
>> > (1) I click on the button of the StatelessForm (SearchForm) in the StartPage class.
>> > (2) The MyFormPage site is displayed.
>> > (3) I select some classes and click the button in the AdvancedSearchForm.
>> > (4) The MyFinalPage site is displayed.
>> > (5) I open the Firefox Browser.
>> > (6) I see the StartPage and click the button in the SearchForm.
>> > (7) The MyFormPage is displayed and the classes from step (3) are selected.
>> > (8) Additionally, I added a System.out.println(model.toString) before the line:
>> > CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
>> > and looked into the Catalino.out logs. You can see that this is directly after the
>> > initilization of the: Model<MySearchModel> model = new Model<MySearchModel>()
>> > -> the logs tell me that the classes from step (3) are in the model
>> > => You can see in the model above that the classes are initialized with null.
>> >
>> > Puh.
>> > This is my problem. I hope that this code example gives a good imagination
>> > of my problem.
>> > I do not know why the classes from step 3 are in the model after a new initialization.
>> >
>> > I would be very thankful for a solution.
>> >
>> > Thanks,
>> > Andre
>> >
>> >
>> >
>> >
>> >
>> > On Tue, 3 Jul 2012 20:16:13 +0200
>> > Andre Schütz <wi...@faustas.de> wrote:
>> >
>> > > There is one important information that I had forgotten to
>> > > mention. The link on my start page is not a link. It is a button
>> > > from within a form.
>> > >
>> > > Andre
>> > >
>> > > On Tue,  3 Jul 2012 11:41:36 +0200 (CEST)
>> > > wicket@faustas.de wrote:
>> > >
>> > > > Hello,
>> > > >
>> > > > thanks for the answers. At the moment I am not able to access my code but let
>> > > > me explain the code in detail and give you some additional examples. I think
>> > > > the idea with the stateful behavior could be right but I do not understand the
>> > > > reason.
>> > > >
>> > > > In detail.
>> > > >
>> > > > - I have a starting page where a Link is constructed that depending on the available
>> > > > PageParameters links to the second page with or without PageParameters:
>> > > >
>> > > > p.. PageParameters
>> > > >
>> > > > setResponsePage(MyPage2.class, p) or setResponsePage(MyPage2.class) or
>> > > >
>> > > > - After clicking the link on the starting page, the MyPage2 will be opened and
>> > > > the constructor adds the elements to the page. A Form will be added and gets
>> > > > a Model that is created in the constructor:
>> > > >
>> > > > MyModel model = new MyModel();
>> > > >
>> > > > The MyModel has two fields.
>> > > > class MyModel {
>> > > >   private String text;
>> > > >   private List<String> classes;
>> > > >   public void setText ..
>> > > >   public void setClasses...
>> > > >   public String getText ...
>> > > >   public List<String> getClasses...
>> > > > }
>> > > >
>> > > > The "classes" field is pre-filled with 3 entries in the MyModel class.
>> > > >
>> > > > Before the end of the constructor, my Form is added with:
>> > > > add(new MyForm("id", new CompoundPropertyModel(model)));
>> > > >
>> > > > When I submit the form, the MyPage3 is opened and the values from
>> > > > the MyForm are used.
>> > > >
>> > > > When I click back to my starting page and click on the link to MyPage2,
>> > > > the selected values from the first click to this page are filled in the
>> > > > MyModel. I printed the values of MyModel directly after the line:
>> > > > MyModel model = new MyModel()
>> > > > Normally, the pre-filled values should be in the classes variable. BUT ...
>> > > > I have the selected values from the first call of the MyPage2.
>> > > > That's my miracle :)
>> > > >
>> > > > Thanks for any additional help
>> > > > Andre
>> > > >
>> > > > ----- Original Message -----
>> > > > From: mgrigorov@apache.org
>> > > > To: users@wicket.apache.org
>> > > > Date: 03.07.2012 07:44:54
>> > > > Subject: Re: Model is not created
>> > > >
>> > > >
>> > > > > On Mon, Jul 2, 2012 at 11:45 PM, Andre Schütz <wi...@faustas.de> wrote:
>> > > > >> Hello,
>> > > > >>
>> > > > >> I have a problem with the creation of a model in one of my pages.
>> > > > >> It works as follows:
>> > > > >>
>> > > > >> I have a link that uses setResponsePage(new MyPage(parameters)) on the click
>> > > > >
>> > > > > I'd recommend to use setResponsePage(MyPage.class, parameters) instead
>> > > > > in this case. This way you will have a nice looking url and the page
>> > > > > may stay stateless if there are no stateful components/behaviors in
>> > > > > it.
>> > > > > If you know the parameters earlier then you can even use
>> > > > > BookmarkablePageLink("id", MyPage.class, parameters) - this will save
>> > > > > you a http redirect.
>> > > > >
>> > > > >> with parameters as PageParameters.
>> > > > >> At the MyPage site, the constructor creates a:
>> > > > >> IModel<MyModel> model = new IModel<MyModel>() {
>> > > > >>   public void setObject ..
>> > > > >>   public MyModel getObject..
>> > > > >> }
>> > > > >>
>> > > > >> This variable is used to create a CompoundPropertyModel for a Form.
>> > > > >>
>> > > > >> The first time when I click on my link to the MyPage site, everything
>> > > > >> is fine. At the second time, the MyModel variable is not empty. The
>> > > > >> variable is filled with the selected values from the first time when
>> > > > >> I clicked on the link to the MyPage site.
>> > > > >>
>> > > > >> I do not understand this behavior. Normally, the MyModel variable
>> > > > >> should be empty and not filled with the last selection.
>> > > > >>
>> > > > >> Has someone an idea?
>> > > > >>
>> > > > >> Thanks,
>> > > > >> Andre
>> > > > >>
>> > > > >> --
>> > > > >> Andre Schütz <wi...@faustas.de>
>> > > > >>
>> > > > >> ---------------------------------------------------------------------
>> > > > >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> > > > >> For additional commands, e-mail: users-help@wicket.apache.org
>> > > > >>
>> > > > >
>> > > > >
>> > > > >
>> > > > > --
>> > > > > Martin Grigorov
>> > > > > jWeekend
>> > > > > Training, Consulting, Development
>> > > > > http://jWeekend.com
>> > > > >
>> > > > > ---------------------------------------------------------------------
>> > > > > 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
>> > >
>> > >
>> > > --
>> > > Andre Schütz <wi...@faustas.de>
>> > >
>> > > ---------------------------------------------------------------------
>> > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> > > For additional commands, e-mail: users-help@wicket.apache.org
>> >
>> >
>> > --
>> > Andre Schütz <wi...@faustas.de>
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> > For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>> --
>> Andre Schütz <wi...@faustas.de>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>
>
> --
> Andre Schütz <wi...@faustas.de>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Model is not created

Posted by Andre Schütz <wi...@faustas.de>.
I found out that I get the same pageID in both
browsers for the MyFormPage. Should the pageID
not be different when I open this site in two
different browsers?

Thanks,
Andre

On Wed, 4 Jul 2012 19:38:28 +0200
Andre Schütz <wi...@faustas.de> wrote:

> No idea? Anybody?
> 
> On Tue, 3 Jul 2012 22:50:04 +0200
> Andre Schütz <wi...@faustas.de> wrote:
> 
> > Hello,
> > 
> > here is an abstract code example of my problem with my application.
> > 
> > ####################
> > # StartPage
> > ####################
> > class StartPage extends WebPage {
> >   public StartPage(PageParameters parameters) {
> >     add(new SearchForm("searchForm", parameters));
> >   }
> > 
> >   private class SearchForm extends StatelessForm {
> >     public SearchForm(String id, final PageParameters params) {
> >       super(id);
> >       init();
> >     }
> > 
> >     private void init() {
> >       Button startButton = new Button("button_search") {
> >         @Override
> >         public void onSubmit() {
> >           PageParamerters p = new PageParameters();
> >           // some additional checks with the parameters
> >           ....
> >           setResponsePage(MyFormPage.class, p);
> >         }
> >       }
> >     }
> >   }
> > }
> > 
> > #################
> > # MyFormPage
> > #################
> > class MyFormPage extends WebPage {
> >   public MyFormPage(PageParameters parameters) {
> >     super(parameters);
> >     Model<MySearchModel> model = new Model<MySearchModel>() {
> >       MySearchModel msm = new MySearchModel();
> > 
> >       @Override
> >       public MySearchModel getObject() {
> >         return msm;
> >       }
> >   
> >       @Override
> >       public void setObject(MySearchModel newModel) {
> >         this.msm = newModel;
> >       }
> >     }
> > 
> >     CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
> >     add(new AdvancedSearchForm("asForm", cpm));
> >   }
> > 
> >   private class AdvancedSearchForm extends StatelessForm<MySearchModel> {
> >     private String name = null;
> > 
> >     public AdvancedSearchForm (String id, IModel<MySearchModel> model) {
> >       super(id, model);
> >       init(model);
> >     }
> > 
> >     private void init(IModel<MySearchModel> model) {
> >       IModel<List<String>> classes = new LoadableDetachableModel<List<String>>() {
> >         @Override
> >         public List<String> load() {
> >           List<String> classes = HelperClass.getClasses();
> >           Collections.sort(classes);
> >           return classes;
> >         }
> >       }
> > 
> >       IChoiceRenderer<Object> rendererClasses = new IChoiceRenderer<Object>() {
> >         public Object getDisplayValue(Object obj) {
> >           return obj;
> >         }
> > 
> >         public String getIdValue(Object obj, int index) {
> >           return obj.toString();
> >         }
> >       };
> >       CheckBoxMultipleChoice<String> classesChoice =
> >                     new CheckBoxMultipleChoice<String>("classes",
> >                             classes,
> >                             rendererClasses);
> >       add(classesChoice);
> > 
> >       TextField<String> tf = new TextField<String>("name", new PropertyModel<String>(this, "name"));
> >       add(tf);
> > 
> >       add(new Button("searchbutton_search") {
> >         @Override
> >         public void onSubmit() {
> >           makeSubmit();
> >         }
> >       });
> >     }
> > 
> >     /**
> >      * Do the submit and got to the response page
> >      */
> >     private void makeSubmit() {
> >       MySession s = (MySession)getSession();
> >       MySearchModel modelObject = this.getModelObject();
> > 
> >       if (!s.mySearchModelExists(modelObject.hashCode())) {
> >         s.setMySearchModel(modelObject);
> >       }
> > 
> >       PageParameters p = new PageParameters();
> >       // following method creates parameters from the model
> >       p = MyParameterHelper.preparePageParameters(p, modelObject);
> >       setResponsePage(MyFinalPage.class, p);
> >     }
> >   }
> > }
> > 
> > ####################
> > # MySearchModel
> > ####################
> > 
> > public class SearchModel implements Serializable {
> >   private String name = null;
> >   private List<String> classes = null;
> > 
> >   public void setName(String newName) {
> >     name = newName;
> >   }
> > 
> >   public void setClasses(List<String> newClasses) {
> >     classes = newClasses;
> >   }
> > 
> >   public String getName() {
> >     return name;
> >   }
> > 
> >   public List<String> getClasses() {
> >     return classes;
> >   }
> > }
> > 
> > The process:
> > 
> > (0) I open the Opera Browser.
> > (1) I click on the button of the StatelessForm (SearchForm) in the StartPage class.
> > (2) The MyFormPage site is displayed.
> > (3) I select some classes and click the button in the AdvancedSearchForm.
> > (4) The MyFinalPage site is displayed.
> > (5) I open the Firefox Browser.
> > (6) I see the StartPage and click the button in the SearchForm.
> > (7) The MyFormPage is displayed and the classes from step (3) are selected.
> > (8) Additionally, I added a System.out.println(model.toString) before the line:
> > CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
> > and looked into the Catalino.out logs. You can see that this is directly after the
> > initilization of the: Model<MySearchModel> model = new Model<MySearchModel>()
> > -> the logs tell me that the classes from step (3) are in the model
> > => You can see in the model above that the classes are initialized with null.
> > 
> > Puh.
> > This is my problem. I hope that this code example gives a good imagination
> > of my problem.
> > I do not know why the classes from step 3 are in the model after a new initialization.
> > 
> > I would be very thankful for a solution.
> > 
> > Thanks,
> > Andre
> > 
> > 
> > 
> > 
> > 
> > On Tue, 3 Jul 2012 20:16:13 +0200
> > Andre Schütz <wi...@faustas.de> wrote:
> > 
> > > There is one important information that I had forgotten to
> > > mention. The link on my start page is not a link. It is a button
> > > from within a form.
> > > 
> > > Andre
> > > 
> > > On Tue,  3 Jul 2012 11:41:36 +0200 (CEST)
> > > wicket@faustas.de wrote:
> > > 
> > > > Hello,
> > > > 
> > > > thanks for the answers. At the moment I am not able to access my code but let
> > > > me explain the code in detail and give you some additional examples. I think
> > > > the idea with the stateful behavior could be right but I do not understand the 
> > > > reason.
> > > > 
> > > > In detail.
> > > > 
> > > > - I have a starting page where a Link is constructed that depending on the available
> > > > PageParameters links to the second page with or without PageParameters:
> > > > 
> > > > p.. PageParameters
> > > > 
> > > > setResponsePage(MyPage2.class, p) or setResponsePage(MyPage2.class) or 
> > > > 
> > > > - After clicking the link on the starting page, the MyPage2 will be opened and 
> > > > the constructor adds the elements to the page. A Form will be added and gets 
> > > > a Model that is created in the constructor:
> > > > 
> > > > MyModel model = new MyModel();
> > > > 
> > > > The MyModel has two fields. 
> > > > class MyModel {
> > > >   private String text;
> > > >   private List<String> classes;
> > > >   public void setText ..
> > > >   public void setClasses...
> > > >   public String getText ...
> > > >   public List<String> getClasses...
> > > > }
> > > > 
> > > > The "classes" field is pre-filled with 3 entries in the MyModel class.
> > > > 
> > > > Before the end of the constructor, my Form is added with:
> > > > add(new MyForm("id", new CompoundPropertyModel(model)));
> > > > 
> > > > When I submit the form, the MyPage3 is opened and the values from
> > > > the MyForm are used.
> > > > 
> > > > When I click back to my starting page and click on the link to MyPage2,
> > > > the selected values from the first click to this page are filled in the
> > > > MyModel. I printed the values of MyModel directly after the line:
> > > > MyModel model = new MyModel()
> > > > Normally, the pre-filled values should be in the classes variable. BUT ... 
> > > > I have the selected values from the first call of the MyPage2.
> > > > That's my miracle :)
> > > > 
> > > > Thanks for any additional help
> > > > Andre
> > > > 
> > > > ----- Original Message -----
> > > > From: mgrigorov@apache.org
> > > > To: users@wicket.apache.org
> > > > Date: 03.07.2012 07:44:54
> > > > Subject: Re: Model is not created
> > > > 
> > > > 
> > > > > On Mon, Jul 2, 2012 at 11:45 PM, Andre Schütz <wi...@faustas.de> wrote:
> > > > >> Hello,
> > > > >> 
> > > > >> I have a problem with the creation of a model in one of my pages.
> > > > >> It works as follows:
> > > > >> 
> > > > >> I have a link that uses setResponsePage(new MyPage(parameters)) on the click
> > > > > 
> > > > > I'd recommend to use setResponsePage(MyPage.class, parameters) instead
> > > > > in this case. This way you will have a nice looking url and the page
> > > > > may stay stateless if there are no stateful components/behaviors in
> > > > > it.
> > > > > If you know the parameters earlier then you can even use
> > > > > BookmarkablePageLink("id", MyPage.class, parameters) - this will save
> > > > > you a http redirect.
> > > > > 
> > > > >> with parameters as PageParameters.
> > > > >> At the MyPage site, the constructor creates a:
> > > > >> IModel<MyModel> model = new IModel<MyModel>() {
> > > > >>   public void setObject ..
> > > > >>   public MyModel getObject..
> > > > >> }
> > > > >> 
> > > > >> This variable is used to create a CompoundPropertyModel for a Form.
> > > > >> 
> > > > >> The first time when I click on my link to the MyPage site, everything
> > > > >> is fine. At the second time, the MyModel variable is not empty. The
> > > > >> variable is filled with the selected values from the first time when
> > > > >> I clicked on the link to the MyPage site.
> > > > >> 
> > > > >> I do not understand this behavior. Normally, the MyModel variable
> > > > >> should be empty and not filled with the last selection.
> > > > >> 
> > > > >> Has someone an idea?
> > > > >> 
> > > > >> Thanks,
> > > > >> Andre
> > > > >> 
> > > > >> --
> > > > >> Andre Schütz <wi...@faustas.de>
> > > > >> 
> > > > >> ---------------------------------------------------------------------
> > > > >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > >> For additional commands, e-mail: users-help@wicket.apache.org
> > > > >> 
> > > > > 
> > > > > 
> > > > > 
> > > > > -- 
> > > > > Martin Grigorov
> > > > > jWeekend
> > > > > Training, Consulting, Development
> > > > > http://jWeekend.com
> > > > > 
> > > > > ---------------------------------------------------------------------
> > > > > 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
> > > 
> > > 
> > > -- 
> > > Andre Schütz <wi...@faustas.de>
> > > 
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > For additional commands, e-mail: users-help@wicket.apache.org
> > 
> > 
> > -- 
> > Andre Schütz <wi...@faustas.de>
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> -- 
> Andre Schütz <wi...@faustas.de>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org


-- 
Andre Schütz <wi...@faustas.de>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Model is not created

Posted by Andre Schütz <wi...@faustas.de>.
No idea? Anybody?

On Tue, 3 Jul 2012 22:50:04 +0200
Andre Schütz <wi...@faustas.de> wrote:

> Hello,
> 
> here is an abstract code example of my problem with my application.
> 
> ####################
> # StartPage
> ####################
> class StartPage extends WebPage {
>   public StartPage(PageParameters parameters) {
>     add(new SearchForm("searchForm", parameters));
>   }
> 
>   private class SearchForm extends StatelessForm {
>     public SearchForm(String id, final PageParameters params) {
>       super(id);
>       init();
>     }
> 
>     private void init() {
>       Button startButton = new Button("button_search") {
>         @Override
>         public void onSubmit() {
>           PageParamerters p = new PageParameters();
>           // some additional checks with the parameters
>           ....
>           setResponsePage(MyFormPage.class, p);
>         }
>       }
>     }
>   }
> }
> 
> #################
> # MyFormPage
> #################
> class MyFormPage extends WebPage {
>   public MyFormPage(PageParameters parameters) {
>     super(parameters);
>     Model<MySearchModel> model = new Model<MySearchModel>() {
>       MySearchModel msm = new MySearchModel();
> 
>       @Override
>       public MySearchModel getObject() {
>         return msm;
>       }
>   
>       @Override
>       public void setObject(MySearchModel newModel) {
>         this.msm = newModel;
>       }
>     }
> 
>     CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
>     add(new AdvancedSearchForm("asForm", cpm));
>   }
> 
>   private class AdvancedSearchForm extends StatelessForm<MySearchModel> {
>     private String name = null;
> 
>     public AdvancedSearchForm (String id, IModel<MySearchModel> model) {
>       super(id, model);
>       init(model);
>     }
> 
>     private void init(IModel<MySearchModel> model) {
>       IModel<List<String>> classes = new LoadableDetachableModel<List<String>>() {
>         @Override
>         public List<String> load() {
>           List<String> classes = HelperClass.getClasses();
>           Collections.sort(classes);
>           return classes;
>         }
>       }
> 
>       IChoiceRenderer<Object> rendererClasses = new IChoiceRenderer<Object>() {
>         public Object getDisplayValue(Object obj) {
>           return obj;
>         }
> 
>         public String getIdValue(Object obj, int index) {
>           return obj.toString();
>         }
>       };
>       CheckBoxMultipleChoice<String> classesChoice =
>                     new CheckBoxMultipleChoice<String>("classes",
>                             classes,
>                             rendererClasses);
>       add(classesChoice);
> 
>       TextField<String> tf = new TextField<String>("name", new PropertyModel<String>(this, "name"));
>       add(tf);
> 
>       add(new Button("searchbutton_search") {
>         @Override
>         public void onSubmit() {
>           makeSubmit();
>         }
>       });
>     }
> 
>     /**
>      * Do the submit and got to the response page
>      */
>     private void makeSubmit() {
>       MySession s = (MySession)getSession();
>       MySearchModel modelObject = this.getModelObject();
> 
>       if (!s.mySearchModelExists(modelObject.hashCode())) {
>         s.setMySearchModel(modelObject);
>       }
> 
>       PageParameters p = new PageParameters();
>       // following method creates parameters from the model
>       p = MyParameterHelper.preparePageParameters(p, modelObject);
>       setResponsePage(MyFinalPage.class, p);
>     }
>   }
> }
> 
> ####################
> # MySearchModel
> ####################
> 
> public class SearchModel implements Serializable {
>   private String name = null;
>   private List<String> classes = null;
> 
>   public void setName(String newName) {
>     name = newName;
>   }
> 
>   public void setClasses(List<String> newClasses) {
>     classes = newClasses;
>   }
> 
>   public String getName() {
>     return name;
>   }
> 
>   public List<String> getClasses() {
>     return classes;
>   }
> }
> 
> The process:
> 
> (0) I open the Opera Browser.
> (1) I click on the button of the StatelessForm (SearchForm) in the StartPage class.
> (2) The MyFormPage site is displayed.
> (3) I select some classes and click the button in the AdvancedSearchForm.
> (4) The MyFinalPage site is displayed.
> (5) I open the Firefox Browser.
> (6) I see the StartPage and click the button in the SearchForm.
> (7) The MyFormPage is displayed and the classes from step (3) are selected.
> (8) Additionally, I added a System.out.println(model.toString) before the line:
> CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
> and looked into the Catalino.out logs. You can see that this is directly after the
> initilization of the: Model<MySearchModel> model = new Model<MySearchModel>()
> -> the logs tell me that the classes from step (3) are in the model
> => You can see in the model above that the classes are initialized with null.
> 
> Puh.
> This is my problem. I hope that this code example gives a good imagination
> of my problem.
> I do not know why the classes from step 3 are in the model after a new initialization.
> 
> I would be very thankful for a solution.
> 
> Thanks,
> Andre
> 
> 
> 
> 
> 
> On Tue, 3 Jul 2012 20:16:13 +0200
> Andre Schütz <wi...@faustas.de> wrote:
> 
> > There is one important information that I had forgotten to
> > mention. The link on my start page is not a link. It is a button
> > from within a form.
> > 
> > Andre
> > 
> > On Tue,  3 Jul 2012 11:41:36 +0200 (CEST)
> > wicket@faustas.de wrote:
> > 
> > > Hello,
> > > 
> > > thanks for the answers. At the moment I am not able to access my code but let
> > > me explain the code in detail and give you some additional examples. I think
> > > the idea with the stateful behavior could be right but I do not understand the 
> > > reason.
> > > 
> > > In detail.
> > > 
> > > - I have a starting page where a Link is constructed that depending on the available
> > > PageParameters links to the second page with or without PageParameters:
> > > 
> > > p.. PageParameters
> > > 
> > > setResponsePage(MyPage2.class, p) or setResponsePage(MyPage2.class) or 
> > > 
> > > - After clicking the link on the starting page, the MyPage2 will be opened and 
> > > the constructor adds the elements to the page. A Form will be added and gets 
> > > a Model that is created in the constructor:
> > > 
> > > MyModel model = new MyModel();
> > > 
> > > The MyModel has two fields. 
> > > class MyModel {
> > >   private String text;
> > >   private List<String> classes;
> > >   public void setText ..
> > >   public void setClasses...
> > >   public String getText ...
> > >   public List<String> getClasses...
> > > }
> > > 
> > > The "classes" field is pre-filled with 3 entries in the MyModel class.
> > > 
> > > Before the end of the constructor, my Form is added with:
> > > add(new MyForm("id", new CompoundPropertyModel(model)));
> > > 
> > > When I submit the form, the MyPage3 is opened and the values from
> > > the MyForm are used.
> > > 
> > > When I click back to my starting page and click on the link to MyPage2,
> > > the selected values from the first click to this page are filled in the
> > > MyModel. I printed the values of MyModel directly after the line:
> > > MyModel model = new MyModel()
> > > Normally, the pre-filled values should be in the classes variable. BUT ... 
> > > I have the selected values from the first call of the MyPage2.
> > > That's my miracle :)
> > > 
> > > Thanks for any additional help
> > > Andre
> > > 
> > > ----- Original Message -----
> > > From: mgrigorov@apache.org
> > > To: users@wicket.apache.org
> > > Date: 03.07.2012 07:44:54
> > > Subject: Re: Model is not created
> > > 
> > > 
> > > > On Mon, Jul 2, 2012 at 11:45 PM, Andre Schütz <wi...@faustas.de> wrote:
> > > >> Hello,
> > > >> 
> > > >> I have a problem with the creation of a model in one of my pages.
> > > >> It works as follows:
> > > >> 
> > > >> I have a link that uses setResponsePage(new MyPage(parameters)) on the click
> > > > 
> > > > I'd recommend to use setResponsePage(MyPage.class, parameters) instead
> > > > in this case. This way you will have a nice looking url and the page
> > > > may stay stateless if there are no stateful components/behaviors in
> > > > it.
> > > > If you know the parameters earlier then you can even use
> > > > BookmarkablePageLink("id", MyPage.class, parameters) - this will save
> > > > you a http redirect.
> > > > 
> > > >> with parameters as PageParameters.
> > > >> At the MyPage site, the constructor creates a:
> > > >> IModel<MyModel> model = new IModel<MyModel>() {
> > > >>   public void setObject ..
> > > >>   public MyModel getObject..
> > > >> }
> > > >> 
> > > >> This variable is used to create a CompoundPropertyModel for a Form.
> > > >> 
> > > >> The first time when I click on my link to the MyPage site, everything
> > > >> is fine. At the second time, the MyModel variable is not empty. The
> > > >> variable is filled with the selected values from the first time when
> > > >> I clicked on the link to the MyPage site.
> > > >> 
> > > >> I do not understand this behavior. Normally, the MyModel variable
> > > >> should be empty and not filled with the last selection.
> > > >> 
> > > >> Has someone an idea?
> > > >> 
> > > >> Thanks,
> > > >> Andre
> > > >> 
> > > >> --
> > > >> Andre Schütz <wi...@faustas.de>
> > > >> 
> > > >> ---------------------------------------------------------------------
> > > >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > >> For additional commands, e-mail: users-help@wicket.apache.org
> > > >> 
> > > > 
> > > > 
> > > > 
> > > > -- 
> > > > Martin Grigorov
> > > > jWeekend
> > > > Training, Consulting, Development
> > > > http://jWeekend.com
> > > > 
> > > > ---------------------------------------------------------------------
> > > > 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
> > 
> > 
> > -- 
> > Andre Schütz <wi...@faustas.de>
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> -- 
> Andre Schütz <wi...@faustas.de>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org


-- 
Andre Schütz <wi...@faustas.de>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Model is not created

Posted by Andre Schütz <wi...@faustas.de>.
Hello,

here is an abstract code example of my problem with my application.

####################
# StartPage
####################
class StartPage extends WebPage {
  public StartPage(PageParameters parameters) {
    add(new SearchForm("searchForm", parameters));
  }

  private class SearchForm extends StatelessForm {
    public SearchForm(String id, final PageParameters params) {
      super(id);
      init();
    }

    private void init() {
      Button startButton = new Button("button_search") {
        @Override
        public void onSubmit() {
          PageParamerters p = new PageParameters();
          // some additional checks with the parameters
          ....
          setResponsePage(MyFormPage.class, p);
        }
      }
    }
  }
}

#################
# MyFormPage
#################
class MyFormPage extends WebPage {
  public MyFormPage(PageParameters parameters) {
    super(parameters);
    Model<MySearchModel> model = new Model<MySearchModel>() {
      MySearchModel msm = new MySearchModel();

      @Override
      public MySearchModel getObject() {
        return msm;
      }
  
      @Override
      public void setObject(MySearchModel newModel) {
        this.msm = newModel;
      }
    }

    CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
    add(new AdvancedSearchForm("asForm", cpm));
  }

  private class AdvancedSearchForm extends StatelessForm<MySearchModel> {
    private String name = null;

    public AdvancedSearchForm (String id, IModel<MySearchModel> model) {
      super(id, model);
      init(model);
    }

    private void init(IModel<MySearchModel> model) {
      IModel<List<String>> classes = new LoadableDetachableModel<List<String>>() {
        @Override
        public List<String> load() {
          List<String> classes = HelperClass.getClasses();
          Collections.sort(classes);
          return classes;
        }
      }

      IChoiceRenderer<Object> rendererClasses = new IChoiceRenderer<Object>() {
        public Object getDisplayValue(Object obj) {
          return obj;
        }

        public String getIdValue(Object obj, int index) {
          return obj.toString();
        }
      };
      CheckBoxMultipleChoice<String> classesChoice =
                    new CheckBoxMultipleChoice<String>("classes",
                            classes,
                            rendererClasses);
      add(classesChoice);

      TextField<String> tf = new TextField<String>("name", new PropertyModel<String>(this, "name"));
      add(tf);

      add(new Button("searchbutton_search") {
        @Override
        public void onSubmit() {
          makeSubmit();
        }
      });
    }

    /**
     * Do the submit and got to the response page
     */
    private void makeSubmit() {
      MySession s = (MySession)getSession();
      MySearchModel modelObject = this.getModelObject();

      if (!s.mySearchModelExists(modelObject.hashCode())) {
        s.setMySearchModel(modelObject);
      }

      PageParameters p = new PageParameters();
      // following method creates parameters from the model
      p = MyParameterHelper.preparePageParameters(p, modelObject);
      setResponsePage(MyFinalPage.class, p);
    }
  }
}

####################
# MySearchModel
####################

public class SearchModel implements Serializable {
  private String name = null;
  private List<String> classes = null;

  public void setName(String newName) {
    name = newName;
  }

  public void setClasses(List<String> newClasses) {
    classes = newClasses;
  }

  public String getName() {
    return name;
  }

  public List<String> getClasses() {
    return classes;
  }
}

The process:

(0) I open the Opera Browser.
(1) I click on the button of the StatelessForm (SearchForm) in the StartPage class.
(2) The MyFormPage site is displayed.
(3) I select some classes and click the button in the AdvancedSearchForm.
(4) The MyFinalPage site is displayed.
(5) I open the Firefox Browser.
(6) I see the StartPage and click the button in the SearchForm.
(7) The MyFormPage is displayed and the classes from step (3) are selected.
(8) Additionally, I added a System.out.println(model.toString) before the line:
CompundPropertyModel<MySearchModel> cpm = new CompoundPropertyModel<MySearchModel>(model);
and looked into the Catalino.out logs. You can see that this is directly after the
initilization of the: Model<MySearchModel> model = new Model<MySearchModel>()
-> the logs tell me that the classes from step (3) are in the model
=> You can see in the model above that the classes are initialized with null.

Puh.
This is my problem. I hope that this code example gives a good imagination
of my problem.
I do not know why the classes from step 3 are in the model after a new initialization.

I would be very thankful for a solution.

Thanks,
Andre





On Tue, 3 Jul 2012 20:16:13 +0200
Andre Schütz <wi...@faustas.de> wrote:

> There is one important information that I had forgotten to
> mention. The link on my start page is not a link. It is a button
> from within a form.
> 
> Andre
> 
> On Tue,  3 Jul 2012 11:41:36 +0200 (CEST)
> wicket@faustas.de wrote:
> 
> > Hello,
> > 
> > thanks for the answers. At the moment I am not able to access my code but let
> > me explain the code in detail and give you some additional examples. I think
> > the idea with the stateful behavior could be right but I do not understand the 
> > reason.
> > 
> > In detail.
> > 
> > - I have a starting page where a Link is constructed that depending on the available
> > PageParameters links to the second page with or without PageParameters:
> > 
> > p.. PageParameters
> > 
> > setResponsePage(MyPage2.class, p) or setResponsePage(MyPage2.class) or 
> > 
> > - After clicking the link on the starting page, the MyPage2 will be opened and 
> > the constructor adds the elements to the page. A Form will be added and gets 
> > a Model that is created in the constructor:
> > 
> > MyModel model = new MyModel();
> > 
> > The MyModel has two fields. 
> > class MyModel {
> >   private String text;
> >   private List<String> classes;
> >   public void setText ..
> >   public void setClasses...
> >   public String getText ...
> >   public List<String> getClasses...
> > }
> > 
> > The "classes" field is pre-filled with 3 entries in the MyModel class.
> > 
> > Before the end of the constructor, my Form is added with:
> > add(new MyForm("id", new CompoundPropertyModel(model)));
> > 
> > When I submit the form, the MyPage3 is opened and the values from
> > the MyForm are used.
> > 
> > When I click back to my starting page and click on the link to MyPage2,
> > the selected values from the first click to this page are filled in the
> > MyModel. I printed the values of MyModel directly after the line:
> > MyModel model = new MyModel()
> > Normally, the pre-filled values should be in the classes variable. BUT ... 
> > I have the selected values from the first call of the MyPage2.
> > That's my miracle :)
> > 
> > Thanks for any additional help
> > Andre
> > 
> > ----- Original Message -----
> > From: mgrigorov@apache.org
> > To: users@wicket.apache.org
> > Date: 03.07.2012 07:44:54
> > Subject: Re: Model is not created
> > 
> > 
> > > On Mon, Jul 2, 2012 at 11:45 PM, Andre Schütz <wi...@faustas.de> wrote:
> > >> Hello,
> > >> 
> > >> I have a problem with the creation of a model in one of my pages.
> > >> It works as follows:
> > >> 
> > >> I have a link that uses setResponsePage(new MyPage(parameters)) on the click
> > > 
> > > I'd recommend to use setResponsePage(MyPage.class, parameters) instead
> > > in this case. This way you will have a nice looking url and the page
> > > may stay stateless if there are no stateful components/behaviors in
> > > it.
> > > If you know the parameters earlier then you can even use
> > > BookmarkablePageLink("id", MyPage.class, parameters) - this will save
> > > you a http redirect.
> > > 
> > >> with parameters as PageParameters.
> > >> At the MyPage site, the constructor creates a:
> > >> IModel<MyModel> model = new IModel<MyModel>() {
> > >>   public void setObject ..
> > >>   public MyModel getObject..
> > >> }
> > >> 
> > >> This variable is used to create a CompoundPropertyModel for a Form.
> > >> 
> > >> The first time when I click on my link to the MyPage site, everything
> > >> is fine. At the second time, the MyModel variable is not empty. The
> > >> variable is filled with the selected values from the first time when
> > >> I clicked on the link to the MyPage site.
> > >> 
> > >> I do not understand this behavior. Normally, the MyModel variable
> > >> should be empty and not filled with the last selection.
> > >> 
> > >> Has someone an idea?
> > >> 
> > >> Thanks,
> > >> Andre
> > >> 
> > >> --
> > >> Andre Schütz <wi...@faustas.de>
> > >> 
> > >> ---------------------------------------------------------------------
> > >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > >> For additional commands, e-mail: users-help@wicket.apache.org
> > >> 
> > > 
> > > 
> > > 
> > > -- 
> > > Martin Grigorov
> > > jWeekend
> > > Training, Consulting, Development
> > > http://jWeekend.com
> > > 
> > > ---------------------------------------------------------------------
> > > 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
> 
> 
> -- 
> Andre Schütz <wi...@faustas.de>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org


-- 
Andre Schütz <wi...@faustas.de>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Model is not created

Posted by Andre Schütz <wi...@faustas.de>.
There is one important information that I had forgotten to
mention. The link on my start page is not a link. It is a button
from within a form.

Andre

On Tue,  3 Jul 2012 11:41:36 +0200 (CEST)
wicket@faustas.de wrote:

> Hello,
> 
> thanks for the answers. At the moment I am not able to access my code but let
> me explain the code in detail and give you some additional examples. I think
> the idea with the stateful behavior could be right but I do not understand the 
> reason.
> 
> In detail.
> 
> - I have a starting page where a Link is constructed that depending on the available
> PageParameters links to the second page with or without PageParameters:
> 
> p.. PageParameters
> 
> setResponsePage(MyPage2.class, p) or setResponsePage(MyPage2.class) or 
> 
> - After clicking the link on the starting page, the MyPage2 will be opened and 
> the constructor adds the elements to the page. A Form will be added and gets 
> a Model that is created in the constructor:
> 
> MyModel model = new MyModel();
> 
> The MyModel has two fields. 
> class MyModel {
>   private String text;
>   private List<String> classes;
>   public void setText ..
>   public void setClasses...
>   public String getText ...
>   public List<String> getClasses...
> }
> 
> The "classes" field is pre-filled with 3 entries in the MyModel class.
> 
> Before the end of the constructor, my Form is added with:
> add(new MyForm("id", new CompoundPropertyModel(model)));
> 
> When I submit the form, the MyPage3 is opened and the values from
> the MyForm are used.
> 
> When I click back to my starting page and click on the link to MyPage2,
> the selected values from the first click to this page are filled in the
> MyModel. I printed the values of MyModel directly after the line:
> MyModel model = new MyModel()
> Normally, the pre-filled values should be in the classes variable. BUT ... 
> I have the selected values from the first call of the MyPage2.
> That's my miracle :)
> 
> Thanks for any additional help
> Andre
> 
> ----- Original Message -----
> From: mgrigorov@apache.org
> To: users@wicket.apache.org
> Date: 03.07.2012 07:44:54
> Subject: Re: Model is not created
> 
> 
> > On Mon, Jul 2, 2012 at 11:45 PM, Andre Schütz <wi...@faustas.de> wrote:
> >> Hello,
> >> 
> >> I have a problem with the creation of a model in one of my pages.
> >> It works as follows:
> >> 
> >> I have a link that uses setResponsePage(new MyPage(parameters)) on the click
> > 
> > I'd recommend to use setResponsePage(MyPage.class, parameters) instead
> > in this case. This way you will have a nice looking url and the page
> > may stay stateless if there are no stateful components/behaviors in
> > it.
> > If you know the parameters earlier then you can even use
> > BookmarkablePageLink("id", MyPage.class, parameters) - this will save
> > you a http redirect.
> > 
> >> with parameters as PageParameters.
> >> At the MyPage site, the constructor creates a:
> >> IModel<MyModel> model = new IModel<MyModel>() {
> >>   public void setObject ..
> >>   public MyModel getObject..
> >> }
> >> 
> >> This variable is used to create a CompoundPropertyModel for a Form.
> >> 
> >> The first time when I click on my link to the MyPage site, everything
> >> is fine. At the second time, the MyModel variable is not empty. The
> >> variable is filled with the selected values from the first time when
> >> I clicked on the link to the MyPage site.
> >> 
> >> I do not understand this behavior. Normally, the MyModel variable
> >> should be empty and not filled with the last selection.
> >> 
> >> Has someone an idea?
> >> 
> >> Thanks,
> >> Andre
> >> 
> >> --
> >> Andre Schütz <wi...@faustas.de>
> >> 
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >> For additional commands, e-mail: users-help@wicket.apache.org
> >> 
> > 
> > 
> > 
> > -- 
> > Martin Grigorov
> > jWeekend
> > Training, Consulting, Development
> > http://jWeekend.com
> > 
> > ---------------------------------------------------------------------
> > 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


-- 
Andre Schütz <wi...@faustas.de>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Re: Model is not created

Posted by wi...@faustas.de.
Hello,

thanks for the answers. At the moment I am not able to access my code but let
me explain the code in detail and give you some additional examples. I think
the idea with the stateful behavior could be right but I do not understand the 
reason.

In detail.

- I have a starting page where a Link is constructed that depending on the available
PageParameters links to the second page with or without PageParameters:

p.. PageParameters

setResponsePage(MyPage2.class, p) or setResponsePage(MyPage2.class) or 

- After clicking the link on the starting page, the MyPage2 will be opened and 
the constructor adds the elements to the page. A Form will be added and gets 
a Model that is created in the constructor:

MyModel model = new MyModel();

The MyModel has two fields. 
class MyModel {
  private String text;
  private List<String> classes;
  public void setText ..
  public void setClasses...
  public String getText ...
  public List<String> getClasses...
}

The "classes" field is pre-filled with 3 entries in the MyModel class.

Before the end of the constructor, my Form is added with:
add(new MyForm("id", new CompoundPropertyModel(model)));

When I submit the form, the MyPage3 is opened and the values from
the MyForm are used.

When I click back to my starting page and click on the link to MyPage2,
the selected values from the first click to this page are filled in the
MyModel. I printed the values of MyModel directly after the line:
MyModel model = new MyModel()
Normally, the pre-filled values should be in the classes variable. BUT ... 
I have the selected values from the first call of the MyPage2.
That's my miracle :)

Thanks for any additional help
Andre

----- Original Message -----
From: mgrigorov@apache.org
To: users@wicket.apache.org
Date: 03.07.2012 07:44:54
Subject: Re: Model is not created


> On Mon, Jul 2, 2012 at 11:45 PM, Andre Schütz <wi...@faustas.de> wrote:
>> Hello,
>> 
>> I have a problem with the creation of a model in one of my pages.
>> It works as follows:
>> 
>> I have a link that uses setResponsePage(new MyPage(parameters)) on the click
> 
> I'd recommend to use setResponsePage(MyPage.class, parameters) instead
> in this case. This way you will have a nice looking url and the page
> may stay stateless if there are no stateful components/behaviors in
> it.
> If you know the parameters earlier then you can even use
> BookmarkablePageLink("id", MyPage.class, parameters) - this will save
> you a http redirect.
> 
>> with parameters as PageParameters.
>> At the MyPage site, the constructor creates a:
>> IModel<MyModel> model = new IModel<MyModel>() {
>>   public void setObject ..
>>   public MyModel getObject..
>> }
>> 
>> This variable is used to create a CompoundPropertyModel for a Form.
>> 
>> The first time when I click on my link to the MyPage site, everything
>> is fine. At the second time, the MyModel variable is not empty. The
>> variable is filled with the selected values from the first time when
>> I clicked on the link to the MyPage site.
>> 
>> I do not understand this behavior. Normally, the MyModel variable
>> should be empty and not filled with the last selection.
>> 
>> Has someone an idea?
>> 
>> Thanks,
>> Andre
>> 
>> --
>> Andre Schütz <wi...@faustas.de>
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>> 
> 
> 
> 
> -- 
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
> 
> ---------------------------------------------------------------------
> 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: Model is not created

Posted by Martin Grigorov <mg...@apache.org>.
On Mon, Jul 2, 2012 at 11:45 PM, Andre Schütz <wi...@faustas.de> wrote:
> Hello,
>
> I have a problem with the creation of a model in one of my pages.
> It works as follows:
>
> I have a link that uses setResponsePage(new MyPage(parameters)) on the click

I'd recommend to use setResponsePage(MyPage.class, parameters) instead
in this case. This way you will have a nice looking url and the page
may stay stateless if there are no stateful components/behaviors in
it.
If you know the parameters earlier then you can even use
BookmarkablePageLink("id", MyPage.class, parameters) - this will save
you a http redirect.

> with parameters as PageParameters.
> At the MyPage site, the constructor creates a:
> IModel<MyModel> model = new IModel<MyModel>() {
>   public void setObject ..
>   public MyModel getObject..
> }
>
> This variable is used to create a CompoundPropertyModel for a Form.
>
> The first time when I click on my link to the MyPage site, everything
> is fine. At the second time, the MyModel variable is not empty. The
> variable is filled with the selected values from the first time when
> I clicked on the link to the MyPage site.
>
> I do not understand this behavior. Normally, the MyModel variable
> should be empty and not filled with the last selection.
>
> Has someone an idea?
>
> Thanks,
> Andre
>
> --
> Andre Schütz <wi...@faustas.de>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Model is not created

Posted by Jeremy Thomerson <je...@wickettraining.com>.
On Mon, Jul 2, 2012 at 4:45 PM, Andre Schütz <wi...@faustas.de> wrote:

> Hello,
>
> I have a problem with the creation of a model in one of my pages.
> It works as follows:
>
> I have a link that uses setResponsePage(new MyPage(parameters)) on the
> click
> with parameters as PageParameters.
> At the MyPage site, the constructor creates a:
> IModel<MyModel> model = new IModel<MyModel>() {
>   public void setObject ..
>   public MyModel getObject..
> }
>
> This variable is used to create a CompoundPropertyModel for a Form.
>
> The first time when I click on my link to the MyPage site, everything
> is fine. At the second time, the MyModel variable is not empty. The
> variable is filled with the selected values from the first time when
> I clicked on the link to the MyPage site.
>
> I do not understand this behavior. Normally, the MyModel variable
> should be empty and not filled with the last selection.
>
> Has someone an idea?
>
> Thanks,
> Andre
>
> --
> Andre Schütz <wi...@faustas.de>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

You'd need to show more code for us to be more helpful.  I'm suspecting
that you are clicking a stateful link on that page, which means of course
that your constructor will not be called again.

-- 
Jeremy Thomerson
http://wickettraining.com
*Need a CMS for Wicket?  Use Brix! http://brixcms.org*