Здравствуйте!
Возникла проблема при переходе с одного экрана на другой с помощью ViewNavigators
.
У меня есть экран SomeView
(аннотирован @Route(value = "some-view", ...)
). В нём по пользовательскому вводу осуществляется переход на другой экран SomeListView
:
@Route(value = "some-view", layout = SomeLayout::class)
@ViewController(id = "some_View")
@ViewDescriptor(path = "some-view.xml")
class SomeView : StandardView() {
@Autowired
private lateinit var dataManager: DataManager
@Autowired
private lateinit var viewNavigators: ViewNavigators
@Subscribe("searchComboBox")
private fun onSearchComboBoxCustomValueSet(event: ComboBoxBase.CustomValueSetEvent<ComboBox<Any>>) {
val userInput = event.detail.orEmpty().trim()
if (userInput.isNotEmpty()) {
val matchingItems = dataManager.load(SomeEntity::class.java)
.query("select e from SomeEntity e where lower(e.someField) like :value")
.parameter("value", "%${userInput.lowercase()}%")
.list()
val matchingIds = matchingItems.mapNotNull { it.id }
if (matchingIds.isNotEmpty()) {
viewNavigators.listView(this, SomeListView::class.java)
.withViewClass(SomeListView::class.java)
.withAfterNavigationHandler { navEvent ->
navEvent.view.applyFilter(matchingIds)
}
.navigate()
}
}
}
}
Сам переход работает, экран открывается, но URL в браузере не меняется — остаётся some-view
, хотя ожидается some-list-view
. Как корректно инициировать переход, чтобы URL обновлялся в соответствии с @Route
у целевого экрана (SomeListView
)?