gpt4 book ai didi

javascript - Vaadin 8 向 html head 标签添加代码的方式是什么?

转载 作者:行者123 更新时间:2023-11-30 09:30:23 25 4
gpt4 key购买 nike

Other SO answers建议重写 ApplicationServlet.writeAjaxPageHtmlHeader,但我在 Vaadin 8 中找不到这些类和方法。

我在 com.vaadin.server.VaadinServletcom.vaadin.ui.UI 中找不到任何类似的内容。

@JavaScript 注释,但如果我将它放在我的 UI 类中,该脚本将为我的应用程序的每个页面加载。我只需要在一个特定页面上使用它。

最佳答案

初始 HTML 页面在 Vaadin 中称为引导页面。在 Book of Vaadin 中有一些文档可以提示您正确的方向.

在Vaadin 8中,需要在session中添加BootstrapListener。您可以通过在 VaadinServlet 中添加 SessionInitListener 来获取已创建的 session 。

注册 session

此示例将 Vaadin 与 Spring Boot 结合使用,但在不使用 Spring Boot 时也适用相同的原则。

@Component("vaadinServlet")
@WebServlet(urlPatterns = "/*", name = "BootstrapVaadinServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = BoostrapUi.class, productionMode = false)
public class BootstrapVaadinServlet extends SpringVaadinServlet {
private static final Logger logger = LoggerFactory.getLogger(BootstrapVaadinServlet.class);
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
getService().addSessionInitListener(this::addBoostrapListenerOnSessionInit);
}

private void addBoostrapListenerOnSessionInit(SessionInitEvent sessionInitEvent) {
sessionInitEvent.getSession().addBootstrapListener(new AppBootstrapListener());
}
}

实现html head标签修改

public class AppBootstrapListener implements BootstrapListener {
@Override
public void modifyBootstrapFragment(BootstrapFragmentResponse bootstrapFragmentResponse) {

}

@Override
public void modifyBootstrapPage(BootstrapPageResponse res) {
Elements headTags = res.getDocument().getElementsByTag("head");
Element head = headTags.get(0);
head.appendChild(metaExample(res.getDocument()));
}

private Node metaExample(Document document) {
Element meta = document.createElement("meta");
meta.attr("author", "Me");
return meta;
}
}

关于javascript - Vaadin 8 向 html head 标签添加代码的方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46622989/

25 4 0