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) {
}
});
}
我似乎不知道如何将 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) {
}
});
}