Vaadin 8.1 OSGI Portlet 的 SessionInitListener

SessionInitListener for a Vaadin 8.1 OSGI Portlet

我似乎不知道如何将 SessionInitListener 添加到 Liferay 7 上的 Vaadin 8.1 OSGI portlet 运行。

在 Vaadin 7 和 Liferay 6.x 中,它是通过简单地定义 VaadinPortlet 的自定义实现来完成的。任何帮助将不胜感激。

这是可能的。不需要自定义 Portlet 实现。

只需要在 UI init 方法中添加一个 SessionInitListener。

 @Override
    protected void init(final VaadinRequest vaadinRequest) {


        vaadinRequest.getService().addSessionInitListener(this::sessionInit);

结合 lambda,您可以像这样操作 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) {

        }
    });
}