Исходный вид источника:
при переходе от вида, вы можете сделать это с помощью метода UI.getCurrent().navigate(String location, QueryParameters queryParameters)
.
. Или, если вы используете RouterLink
для навигации, вы можете установить там тоже параметры запроса: routerLink.setQueryParameters(QueryParameters queryParameters)
.
Это не то, что можно сделать с помощью аннотации или интерфейса, как это нельзя сделать ни в каком виде навигации Observer. Оптимально, вы должны иметь возможность добавить элемент queryParameter referrer к BeforeLeaveEvent
, но я не думаю, что вы можете сделать это еще (вы можете получить QueryParameters из него, но вы не можете редактировать их там).
просмотр цели реферера:
Вы можете прочитать параметры url из beforeEnterEvent или afterNavigationEvent в представлении цели реферера. Значение реферера вы можете сохранить в поле представления и использовать его, когда пользователь нажимает кнопку «предыдущий просмотр». Я не уверен, как вы могли бы сделать это с помощью аннотации, но это должно быть выполнимо с интерфейсом, если вы хотите.
@Override
public void afterNavigation(AfterNavigationEvent event) {
Map<String, List<String>> parameters = afterNavigationEvent.getLocation().getQueryParameters().getParameters();
// TODO: check parameters for your referrer parameter, and save it in the view
}
Другое возможное решение - оставить QueryParameters в одиночку, и сохраните предыдущий вид в области пользовательского интерфейса (как вы недавно советовали в один из ваших собственных ответов ; P). Теперь, начиная с Vaadin 14, я действительно не уверен, как это работает, поскольку экземпляр пользовательского интерфейса перестраивается после навигации. Но я уверен, что есть хорошее решение, об этом topi c можно найти много обсуждений на SO, форумах vaadin и vaadin github.