You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Emond Papegaaij (Resolved) (JIRA)" <ji...@apache.org> on 2012/01/04 20:07:39 UTC

[jira] [Resolved] (WICKET-4290) Confusion between a form component's wicket:id and a PageParameter in Wicket 1.5.x

     [ https://issues.apache.org/jira/browse/WICKET-4290?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emond Papegaaij resolved WICKET-4290.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 6.0.0
                   1.5.4

A slightly modified version of the patch is applied. PageParameters are no longer rendered in urls for stateful components. StatelessForm and StatelessLink do add the parameters.

In Wicket 6.0, the old urlFor methods are removed from Component. In 1.5.x they stay, but marked deprecated. Wicket itself no longer uses them.
                
> Confusion between a form component's wicket:id and a PageParameter in Wicket 1.5.x
> ----------------------------------------------------------------------------------
>
>                 Key: WICKET-4290
>                 URL: https://issues.apache.org/jira/browse/WICKET-4290
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.5.0, 1.5.1, 1.5.2, 1.5.3
>         Environment: OS Linux Mint
> Java 1.6
>            Reporter: Victor MONTANER
>            Assignee: Emond Papegaaij
>             Fix For: 1.5.4, 6.0.0
>
>         Attachments: 0001-WICKET-4290-Do-not-render-page-parameters-for-statef.patch, 0001-WICKET-4290-remove-page-parameters-in-onBeforeRender.patch, Zencontact.tar.gz
>
>
> A Form has a strange behavior when a component has the same wicket:id than a page parameter.
> To create a Bookmarkable link after a form is submited, setResponsePage is called, and a PageParameter object is given as a parameter : 
> 			PageParameters params = new PageParameters();
> 			params.add("searchString", searchField.getValue());
> 			setResponsePage(SomePage.class, params);
> In Wicket 1.5, if "searchString" is also a form-component's wicket:id, the form will only be submitted once : 
> searchField.getValue() will always return the first value entered by the user.
> Here's an example : 
> public class SearchPanel extends Panel {
> 	public SearchPanel(String id) {
> 		super(id);
> 		add(new SearchForm("searchForm"));
> 	}
> 	private class SearchForm extends Form<String> {
> 		private static final long serialVersionUID = 1L;
> 		private TextField<String> searchField;
> 		public SearchForm(String id) {
> 			super(id);
> 			searchField = new TextField<String>("searchString", new Model<String>(""));
> 			add(searchField);
> 		}
> 		@Override
> 		public void onSubmit() {
> 			PageParameters params = new PageParameters();
> 			params.add("searchString", searchField.getValue());
> 			setResponsePage(ListContactsPage.class, params);
> 		}
> 	}
> }
> I tested the same application with Wicket 1.4.17 and it was fine. I only had this problem in Wicket 1.5.2 and 1.5.3.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira