Я не могу понять, как добавить SessionInitListener в портлет OSGI Vaadin 8.1, работающий на Liferay 7.
В Vaadin 7 и Liferay 6.x это было сделано путем простого определения пользовательской реализации VaadinPortlet. Любая помощь приветствуется.
Я не могу понять, как добавить SessionInitListener в портлет OSGI Vaadin 8.1, работающий на Liferay 7.
В Vaadin 7 и Liferay 6.x это было сделано путем простого определения пользовательской реализации VaadinPortlet. Любая помощь приветствуется.
Это возможно. Нет необходимости в специальной реализации портлета.
Все, что требуется, — это добавить SessionInitListener в метод инициализации пользовательского интерфейса.
@Override
protected void init(final VaadinRequest vaadinRequest) {
vaadinRequest.getService().addSessionInitListener(this::sessionInit);
В сочетании с лямбдой вы можете манипулировать HTML следующим образом.
private void sessionInit(final SessionInitEvent sessionInitEvent) {
sessionInitEvent.getSession().addBootstrapListener(new BootstrapListener() {
@Override
public void modifyBootstrapFragment(final BootstrapFragmentResponse response) {
Element myDiv = new Element(Tag.valueOf("div"), "");
myDiv.append("<h1>Extra HTML!</h1>");
List<Node> nodes = response.getFragmentNodes();
for (Node node : nodes) {
myDiv.appendChild(node);
}
nodes.clear();
nodes.add(myDiv);
}
@Override
public void modifyBootstrapPage(final BootstrapPageResponse bootstrapPageResponse) {
}
});
}