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 <mgrigo...@apache.org> wrote: > On Wed, Jul 4, 2012 at 9:14 PM, Andre Schütz <wic...@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 <wic...@faustas.de> wrote: > > > >> No idea? Anybody? > >> > >> On Tue, 3 Jul 2012 22:50:04 +0200 > >> Andre Schütz <wic...@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 <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 > >> > >> > >> -- > >> 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 > > > > > > -- > 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 -- 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