gpt4 book ai didi

Vaadin 流 : setting the title

转载 作者:行者123 更新时间:2023-12-04 02:25:41 26 4
gpt4 key购买 nike

我目前尝试设置 title的页面。

设想

public class A extends FlexLayout implements RouterLayout {}

@Route(value = "b", layout = A.class)
public class B extends FlexLayout{}
@Route(value = "c", layout = A.class)
public class C extends FlexLayout{}

尝试
  • 为此,我尝试调用 UI.getCurrent().getPage().setTitle("demo title") afterNavigation期间.不幸的是,这不适用于初始导航(添加 attachListener 也不起作用)。
  • 我还尝试使用 PageConfigurator 对其进行配置在最外面 RouterLayout像这样:

  •     @Override
    public void configurePage(InitialPageSettings settings) {
    settings.addMetaTag("title", "demo title");
    settings.addMetaTag("og:title", "demo title");

    settings.addFavIcon("icon", "frontend/images/favicon.ico", "48x48");
    }
  • HasDynamicTitle只有在实现类也定义了 @Route 时似乎才有效。但不是封装 RouterLayout


  • 问题

    出于某种原因 Router本身在导航期间设置标题。

    Stacktrace of the setTitleCall
    Router使用JS定义标题并重新定义 document.titlePage.setTitle似乎只修改了 html.head.title标签。

    问题

    如何将标题设置在一个位置?
    如何防止 Router表单将标题设置为当前 URL 的值?

    笔记

    使用 @PageTitle注释不是一个选项,因为在我的情况下,标题在编译时是未知的。

    最佳答案

    固定标题

    如果你有一个不变的页面标题,你可以用注释来设置它 @PageTitle .

    @PageTitle("home")
    class HomeView extends Div {

    HomeView(){
    setText("This is the home view");
    }
    }

    动态标题

    Vaadin Flow 官方文档建议使用 HasDynamicTitle .

    例子:

    @Route(value = "blog")
    class BlogPost extends implements HasDynamicTitle, HasUrlParameter<Long> {
    private String title = "";

    @Override
    public String getPageTitle() {
    return title;
    }

    @Override
    public void setParameter(BeforeEvent event,
    @OptionalParameter Long parameter) {
    if (parameter != null) {
    title = "Blog Post #" + parameter;
    } else {
    title = "Blog Home";
    }
    }
    }

    Source

    关于Vaadin 流 : setting the title,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56076489/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com