Martin Grigorov commented:
https://gist.github.com/dashorst/6308833/#comment-892137
> > 7.1.3 setResponsePage(Class<?>, PageParameters) removed
>
> What will be the new way to make a redirect with path and/or query parameters 
> ?

It says TODO in the RFC for a reason.

I'm inclined to propose something like:

setResponsePage(EmployeePage.class, companyId, employeeNr, managerNr);

However this seems naive for several reasons:

 - how can we distinguish between Long, Long and Long? Is the order
   of arguments relevant? The binding of parameters should follow a
   strict rule, something like:

     - first the constructor arguments are processed in order

- next the fields are processed in order

- if the type of a parameter is not assignable to the
       constructor argument/field at the specified location, throw an
       error (IllegalArgumentException)

   Unfortunately this doesn't solve the problem that one has to look
   up the order of parameters in the Page class and interpret them
   yourself in the right order. It is however something we can spec
   out, to ensure there is no doubt as to which parameter goes where.

 - it misses out on the name-value binding, but that really does suck
   in Java anyways (no named parameters). I have no idea if it would
   solve a real problem when we introduce a name-value binding for
   setResponsePage(...)

 - Working with optional parameters makes it even more involved

 - Working with free form parameters is also an unsolved issue

Another option would be to make setResponsePage() a builder,
something like:

  redirectToPage(EmployeePage.class)
           .with(companyId)
  .with(employeeNr)
  .with(managerNr)
  .with("foo", "bar")
  .go();

Again, this is just a thought experiment for this particular issue
and I have not thought about the URL generation part yet.

Martijn

Reply via email to