Vaadin 8.1 OSGI Portlet的SessionInListener

Vaadin 8.1 OSGI Portlet的SessionInListener,osgi,vaadin8,Osgi,Vaadin8,我似乎不知道如何将SessionInitListener添加到运行在Liferay 7上的Vaadin 8.1 OSGI portlet中 在vaadin7和liferay6.x中,只需定义VaadinPortlet的自定义实现即可。任何帮助都将不胜感激。这是可能的。不需要自定义Portlet实现 所需的只是在UI init方法中添加SessionInitListener @Override protected void init(final VaadinRequest vaadinR

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


在vaadin7和liferay6.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) {

        }
    });
}
private void sessionInit(最终SessionInitEvent SessionInitEvent){
sessionInitEvent.getSession().addBootstrapListener(新的BootstrapListener()){
@凌驾
public void modifyBootstrapFragment(最终BootstrapFragmentResponse响应){
元素myDiv=新元素(Tag.valueOf(“div”),“”);
追加(“额外的HTML!”);
List nodes=response.getFragmentNodes();
用于(节点:节点){
myDiv.appendChild(节点);
}
nodes.clear();
nodes.add(myDiv);
}
@凌驾
public void modifyBootstrapPage(最终BootstrapPageResponse BootstrapPageResponse){
}
});
}