Есть ли способ определить, какой узел отображается, когда пользователь выбирает ссылку в приложении с подробными сведениями о страницах и изменяется только iframe? Если изменяется только iframe, мне нужен механизм, который может вызывать родительскую страницу и отправлять путь узла, который отображается в iframe. Мы запускаем Magnolia EE 5.6.11. Моя проблема в том, что у меня есть ValueChangeListener в ComboBox, который я использую в качестве versionSelector в расширении PageBar в приложении для детализации страниц.
// Create a selection component;
private ComboBox versionSelector = new ComboBox();
private Listener listener;
private boolean isSettingValue;
public VersionSelectorViewImpl(){
construct();
}
private void construct() {
versionSelector.setVisible(false);
versionSelector.setSizeUndefined();
versionSelector.setImmediate(true);
versionSelector.setNullSelectionAllowed(false);
versionSelector.setTextInputAllowed(false);
//setup listener for the selected item
versionSelector.addValueChangeListener(new Property.ValueChangeListener() {
@Override
public void valueChange(Property.ValueChangeEvent event) {
if (listener != null) {
listener.versionSelected((Object) event.getProperty().getValue());
}
}
});
}
Реализация аналогична LanguageSelector или VariantSelector. Когда кто-то активирует гиперссылку в шаблоне страницы, iframe изменяется, и метод valueChange получает неправильное значение (ie. Событие с предыдущей страницы).
Когда кто-то активирует ссылку, PagesEditorSubApp # updateNodePath вызывает updateLocationDependentComponents, который вызывает PageBar.onLocationUpdate. В нашем случае это вызывает метод VersionSelector # setCurrentVersion. На этом этапе мне нужно будет перезагрузить вспомогательное приложение сведений о странице, чтобы прослушиватель правильно настроил новую страницу. Я пробовал использовать метод pageEditorPresenter.refre sh () в методе setCurrentVersion, но он этого не сделал.