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 <wic...@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) > wic...@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: mgrigo...@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 <wic...@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 <wic...@faustas.de> > > >> > > >> --------------------------------------------------------------------- > > >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > >> For additional commands, e-mail: users-h...@wicket.apache.org > > >> > > > > > > > > > > > > -- > > > Martin Grigorov > > > jWeekend > > > Training, Consulting, Development > > > http://jWeekend.com > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > > For additional commands, e-mail: users-h...@wicket.apache.org > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > For additional commands, e-mail: users-h...@wicket.apache.org > > > -- > Andre Schütz <wic...@faustas.de> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org -- Andre Schütz <wic...@faustas.de> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org