Idea Summary
One of the most difficult things to understand among apex developers is to understand the page lifecycle in apex and to differenciate when string substitutions takes place, and to differenciate between client and session values. A very common behaviour is to dynamically fetch selected items in a page inside an item (comma separated id's or codes), and then try to pass those values to a new page. This is currently not possible to do declaratively, and you have to build the url from scratch by javascript & plsql. Another possible way i just to make reference to page items of the previous page, but this is a bad practice and an automatic apex advisor warning.
If you do this:

Many developers think that their session value will be passed to the next page if they have executed a dynamic action for setting the session values, but this will never happen as that substitution is made during page load, not when you click the button or link. This is so confusing and very common to do, we should be able just to define client items and the link being generated at click time, not during page load.
Use Case
Greately simplify link generation and simplify apex page lifcycle understanding.
Preferred Solution (Optional)
Generate apex links at click time, not on page load. Also make an easier way for this approach, selecting a list of items and pass those values to the next page, as you have to fight with the item separators etc for not being in conflict with standard apex item separators.