Form and PageParameters
Hi, I have created a RequestPage html page containing a form (= search criteria) and a list (= Data View where the result set of data retrieved in a DB according to search criteria is displayed). When the user clicks on the search criteria button of this page, the request is redirected to the RequestPage where we extract the search criteria values and pass them to the service in charge to retrieve the data. In the java class accompagning this page, I have overrided the onSubmit method of the submit button to pass the value of the form fields public RequestPage(final PageParameters parameters) { ... Form form = new Form(searchCriteriaRequest); // Add fields fRequestId = new TextField(fRequestId, new Model()); fFileName = new TextField(fFileName, new Model()); form.add(fRequestId); form.add(fFileName); // Add buttons button = new Button(button) { @Override public void onSubmit() { parameters.add(requestId, fRequestId.getValue()); parameters.add(fileName, fFileName.getValue()); setResponsePage(RequestPage.class, parameters); } }; form.add(button); add(form); In the constructor of this RequestPage, I call a populate method with PageParameters // Populate list with search criteria values populateList(parameters.getKey(requestId), parameters.getKey(fileName)); Questions : 1) Is it the good way to handle PageParameters and Form in Wicket ? If this is not the case, can someone point me to a good example ? 2) The fields filled in the previous post of my page are not removed when I repost a new request on my page. How can I reset these fields from the request of the new post ? Regards, Charles Moulliard Senior Enterprise Architect Apache Camel Committer * blog : http://cmoulliard.blogspot.com
Re: Form and PageParameters
Is it a must that you use PageParameters for RequestPage? Do you need an access to it also from a URL (after mounting it in your Application). I think that a nicer way is to add a constructor that accepts the values. Even better, I would have created a POJO model. Use a CompoundPropertyModel with the form, and pass this object to the RequestPage. Eyal Golan egola...@gmail.com Visit: http://jvdrums.sourceforge.net/ LinkedIn: http://www.linkedin.com/in/egolan74 P Save a tree. Please don't print this e-mail unless it's really necessary On Mon, Sep 7, 2009 at 11:38 AM, Charles Moulliard cmoulli...@gmail.comwrote: Hi, I have created a RequestPage html page containing a form (= search criteria) and a list (= Data View where the result set of data retrieved in a DB according to search criteria is displayed). When the user clicks on the search criteria button of this page, the request is redirected to the RequestPage where we extract the search criteria values and pass them to the service in charge to retrieve the data. In the java class accompagning this page, I have overrided the onSubmit method of the submit button to pass the value of the form fields public RequestPage(final PageParameters parameters) { ... Form form = new Form(searchCriteriaRequest); // Add fields fRequestId = new TextField(fRequestId, new Model()); fFileName = new TextField(fFileName, new Model()); form.add(fRequestId); form.add(fFileName); // Add buttons button = new Button(button) { @Override public void onSubmit() { parameters.add(requestId, fRequestId.getValue()); parameters.add(fileName, fFileName.getValue()); setResponsePage(RequestPage.class, parameters); } }; form.add(button); add(form); In the constructor of this RequestPage, I call a populate method with PageParameters // Populate list with search criteria values populateList(parameters.getKey(requestId), parameters.getKey(fileName)); Questions : 1) Is it the good way to handle PageParameters and Form in Wicket ? If this is not the case, can someone point me to a good example ? 2) The fields filled in the previous post of my page are not removed when I repost a new request on my page. How can I reset these fields from the request of the new post ? Regards, Charles Moulliard Senior Enterprise Architect Apache Camel Committer * blog : http://cmoulliard.blogspot.com
Re: Form and PageParameters
Thx for the reply. You are right, it is not a must to use PageParameters but as this is my first Wicket project, I have started to work with simple things. In the meantime, I have had a look to the formInput example where a CompoundPropertyModel is used. I have adapted the Form to work with it. My question is now : When I call the first time my page, the url is : http://localhost/request. Wicket receives this request and the constructor RequestPage(PageParameter pageParameter) is called. Next, after filling my form in the page and clicking on the onSubmit button, the request is submitted to the same page. How can I retrieve the values of the CompoundPropertyModel from my form in this case ? Do I have to do something particular in the setResponsePage(RequestPage.Class) to pass the compoundPropertyModel ? Do I need to create two different constructors : one for PageParameters and the other to handle CompoundPropertyModel ? Regards, Charles egolan74 wrote: Is it a must that you use PageParameters for RequestPage? Do you need an access to it also from a URL (after mounting it in your Application). I think that a nicer way is to add a constructor that accepts the values. Even better, I would have created a POJO model. Use a CompoundPropertyModel with the form, and pass this object to the RequestPage. Eyal Golan egola...@gmail.com Visit: http://jvdrums.sourceforge.net/ LinkedIn: http://www.linkedin.com/in/egolan74 P Save a tree. Please don't print this e-mail unless it's really necessary On Mon, Sep 7, 2009 at 11:38 AM, Charles Moulliard cmoulli...@gmail.comwrote: Hi, I have created a RequestPage html page containing a form (= search criteria) and a list (= Data View where the result set of data retrieved in a DB according to search criteria is displayed). When the user clicks on the search criteria button of this page, the request is redirected to the RequestPage where we extract the search criteria values and pass them to the service in charge to retrieve the data. In the java class accompagning this page, I have overrided the onSubmit method of the submit button to pass the value of the form fields public RequestPage(final PageParameters parameters) { ... Form form = new Form(searchCriteriaRequest); // Add fields fRequestId = new TextField(fRequestId, new Model()); fFileName = new TextField(fFileName, new Model()); form.add(fRequestId); form.add(fFileName); // Add buttons button = new Button(button) { @Override public void onSubmit() { parameters.add(requestId, fRequestId.getValue()); parameters.add(fileName, fFileName.getValue()); setResponsePage(RequestPage.class, parameters); } }; form.add(button); add(form); In the constructor of this RequestPage, I call a populate method with PageParameters // Populate list with search criteria values populateList(parameters.getKey(requestId), parameters.getKey(fileName)); Questions : 1) Is it the good way to handle PageParameters and Form in Wicket ? If this is not the case, can someone point me to a good example ? 2) The fields filled in the previous post of my page are not removed when I repost a new request on my page. How can I reset these fields from the request of the new post ? Regards, Charles Moulliard Senior Enterprise Architect Apache Camel Committer * blog : http://cmoulliard.blogspot.com - Eyal Golan egola...@gmail.com Visit: JVDrums LinkedIn: LinkedIn - Charles Moulliard SOA Architect My Blog : http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/ -- View this message in context: http://www.nabble.com/Form-and-PageParameters-tp25326933p25328647.html Sent from the Wicket - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Form and PageParameters
you can call YourForm.this.getModelObject() in your forms onSubmit or the buttons onSubmit method. that would return the model object bound to your CompoundPropertyModel and you model object would have all the updated values -dipu On Mon, Sep 7, 2009 at 11:58 AM, cmoulliardcmoulli...@gmail.com wrote: Thx for the reply. You are right, it is not a must to use PageParameters but as this is my first Wicket project, I have started to work with simple things. In the meantime, I have had a look to the formInput example where a CompoundPropertyModel is used. I have adapted the Form to work with it. My question is now : When I call the first time my page, the url is : http://localhost/request. Wicket receives this request and the constructor RequestPage(PageParameter pageParameter) is called. Next, after filling my form in the page and clicking on the onSubmit button, the request is submitted to the same page. How can I retrieve the values of the CompoundPropertyModel from my form in this case ? Do I have to do something particular in the setResponsePage(RequestPage.Class) to pass the compoundPropertyModel ? Do I need to create two different constructors : one for PageParameters and the other to handle CompoundPropertyModel ? Regards, Charles egolan74 wrote: Is it a must that you use PageParameters for RequestPage? Do you need an access to it also from a URL (after mounting it in your Application). I think that a nicer way is to add a constructor that accepts the values. Even better, I would have created a POJO model. Use a CompoundPropertyModel with the form, and pass this object to the RequestPage. Eyal Golan egola...@gmail.com Visit: http://jvdrums.sourceforge.net/ LinkedIn: http://www.linkedin.com/in/egolan74 P Save a tree. Please don't print this e-mail unless it's really necessary On Mon, Sep 7, 2009 at 11:38 AM, Charles Moulliard cmoulli...@gmail.comwrote: Hi, I have created a RequestPage html page containing a form (= search criteria) and a list (= Data View where the result set of data retrieved in a DB according to search criteria is displayed). When the user clicks on the search criteria button of this page, the request is redirected to the RequestPage where we extract the search criteria values and pass them to the service in charge to retrieve the data. In the java class accompagning this page, I have overrided the onSubmit method of the submit button to pass the value of the form fields public RequestPage(final PageParameters parameters) { ... Form form = new Form(searchCriteriaRequest); // Add fields fRequestId = new TextField(fRequestId, new Model()); fFileName = new TextField(fFileName, new Model()); form.add(fRequestId); form.add(fFileName); // Add buttons button = new Button(button) { �...@override public void onSubmit() { parameters.add(requestId, fRequestId.getValue()); parameters.add(fileName, fFileName.getValue()); setResponsePage(RequestPage.class, parameters); } }; form.add(button); add(form); In the constructor of this RequestPage, I call a populate method with PageParameters // Populate list with search criteria values populateList(parameters.getKey(requestId), parameters.getKey(fileName)); Questions : 1) Is it the good way to handle PageParameters and Form in Wicket ? If this is not the case, can someone point me to a good example ? 2) The fields filled in the previous post of my page are not removed when I repost a new request on my page. How can I reset these fields from the request of the new post ? Regards, Charles Moulliard Senior Enterprise Architect Apache Camel Committer * blog : http://cmoulliard.blogspot.com - Eyal Golan egola...@gmail.com Visit: JVDrums LinkedIn: LinkedIn - Charles Moulliard SOA Architect My Blog : http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/ -- View this message in context: http://www.nabble.com/Form-and-PageParameters-tp25326933p25328647.html Sent from the Wicket - User mailing list archive at Nabble.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
Re: Form and PageParameters
back to my original question, do you actually need this page to have a constructor with PageParameters? hint - if you want a user to get it with nice URL, then yes. You can call one constructor to the other (sometimes tricky in situation like yours), or you can have an init() method that does everything and call it from each constructor. everything Eyal Golan egola...@gmail.com Visit: http://jvdrums.sourceforge.net/ LinkedIn: http://www.linkedin.com/in/egolan74 P Save a tree. Please don't print this e-mail unless it's really necessary On Mon, Sep 7, 2009 at 4:34 PM, cmoulliard cmoulli...@gmail.com wrote: Many thanks for your help. With the modifications you propose, everything works fine Here is what I changed in the onSubmit method of the button public void onSubmit() { setResponsePage(new RequestPage((RequestModel) this.getForm().getModelObject())); } Question : Do I have need to duplicate the code between the two constructors ? I mean Do I need to have in double ? final FeedbackPanel feedback = new FeedbackPanel(feedback); add(feedback); RequestForm requestForm = new RequestForm(requestForm); add(requestForm); . egolan74 wrote: You can have two constructors in your page. If you work 'internally' then you can use the one that accepts a pojo. If you work with URL, then the one that accepts PageParameters will be used. the setResponsePage can accept a Page and not only a class, so what you can do is create your page: new RequestPage(myPojoModelObject), and then put it in the setResponsePage parameter. IllegalArgumentException: A child with id 'requestList' already means that you added it already to your page. AFAICS you don't go to a new page in the button submit so you add the list over and over again. if you want to update a list, use a dynamic model for the content and update it. Eyal Golan egola...@gmail.com Visit: http://jvdrums.sourceforge.net/ LinkedIn: http://www.linkedin.com/in/egolan74 P Save a tree. Please don't print this e-mail unless it's really necessary On Mon, Sep 7, 2009 at 1:58 PM, cmoulliard cmoulli...@gmail.com wrote: Thx for the reply. You are right, it is not a must to use PageParameters but as this is my first Wicket project, I have started to work with simple things. In the meantime, I have had a look to the formInput example where a CompoundPropertyModel is used. I have adapted the Form to work with it. My question is now : When I call the first time my page, the url is : http://localhost/request. Wicket receives this request and the constructor RequestPage(PageParameter pageParameter) is called. Next, after filling my form in the page and clicking on the onSubmit button, the request is submitted to the same page. How can I retrieve the values of the CompoundPropertyModel from my form in this case ? Do I have to do something particular in the setResponsePage(RequestPage.Class) to pass the compoundPropertyModel ? Do I need to create two different constructors : one for PageParameters and the other to handle CompoundPropertyModel ? Regards, Charles egolan74 wrote: Is it a must that you use PageParameters for RequestPage? Do you need an access to it also from a URL (after mounting it in your Application). I think that a nicer way is to add a constructor that accepts the values. Even better, I would have created a POJO model. Use a CompoundPropertyModel with the form, and pass this object to the RequestPage. Eyal Golan egola...@gmail.com Visit: http://jvdrums.sourceforge.net/ LinkedIn: http://www.linkedin.com/in/egolan74 P Save a tree. Please don't print this e-mail unless it's really necessary On Mon, Sep 7, 2009 at 11:38 AM, Charles Moulliard cmoulli...@gmail.comwrote: Hi, I have created a RequestPage html page containing a form (= search criteria) and a list (= Data View where the result set of data retrieved in a DB according to search criteria is displayed). When the user clicks on the search criteria button of this page, the request is redirected to the RequestPage where we extract the search criteria values and pass them to the service in charge to retrieve the data. In the java class accompagning this page, I have overrided the onSubmit method of the submit button to pass the value of the form fields public RequestPage(final PageParameters parameters) { ... Form form = new Form(searchCriteriaRequest); // Add fields fRequestId = new TextField(fRequestId, new Model()); fFileName = new TextField(fFileName, new Model()); form.add(fRequestId); form.add(fFileName); // Add buttons button = new Button(button) { @Override public void