This is not available out of the box but it is possible to do it without any changes in wicket-core. Just provide your own impl of IPageFactory interface. Use DefaultPageFactory as inspiration.
Here are the problems that I see with it: - it will use reflection to find all available constructors in a page -- needs a cache to not read class metadata more than once per page - needs a logic to decide what to do if there are more than one converters which would create a POJO for the same parameters - FormComponents' IConverter currently has a unresolved problem - it doesn't support base type. E.g. if there is registered converter for Employee but a Page has constructor with Person (which is base for Employee) parameter should the converter be used ? What would such converter actually do? I guess the encoder for an employee it will generate PageParameters with id->empId (assuming you want a nice looking url which will encode 'employee' as Url segment, e.g. /company/employee/34). Later the decoder will do what ? Will make a request to the DB to load all the details for the Employee ? I think it should provide a model - MyPage(IModel<Employee>), e.g. LDM<Employee>, and make the request to the DB as late as possible. But we already have this constructor in (Web)Page API (org.apache.wicket.Page#Page(IModel)) On Mon, Jan 21, 2013 at 9:14 AM, Martijn Dashorst < [email protected]> wrote: > We have a really nice type safe API but the thing that strikes me as > odd is that AFIAK we don't have converters from PageParameters to > objects and back. Now it probably is not easy to get it right, but > what would be not too crazy is to be able to register a > PersonPageParametersConverter such that a PersonPage taking a Person > as a constructor parameter would be considered bookmarkable. > > Perhaps this would be good to have as an annotation? > > Martijn > > -- > Become a Wicket expert, learn from the best: http://wicketinaction.com > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com <http://jweekend.com/>
