Ger*_*zek 9 html-title vaadin vaadin-flow
我目前尝试设置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{}
Run Code Online (Sandbox Code Playgroud)
为此,我尝试在UI.getCurrent().getPage().setTitle("demo title")期间致电afterNavigation。不幸的是,这不适用于初始导航(也没有添加attachListener)。
我也尝试使用PageConfigurator最外层的进行配置,RouterLayout如下所示:
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{}
Run Code Online (Sandbox Code Playgroud)
HasDynamicTitle只有在实现类也定义了@Route而不是封装的情况下,似乎才起作用RouterLayout由于某种原因,Router它本身会在导航期间设置标题。
该Router定义标题使用JS和重新定义document.title,同时Page.setTitle似乎只修改html.head.title标签。
如何在单个位置设置标题?
如何防止Router表单将标题设置为当前URL的值?
使用@PageTitle注释不是一个选项,因为在我的情况下,在编译时不知道标题。
如果您的页面标题不变,您只需使用注释对其进行设置即可@PageTitle。
@PageTitle("home")
class HomeView extends Div {
HomeView(){
setText("This is the home view");
}
}
Run Code Online (Sandbox Code Playgroud)
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";
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |