如何删除“#!”从Vaadin 8 URL的?

时间:2018-08-07 14:29:22

标签: java url view vaadin8

我们有一个Vaadin 8应用程序,该应用程序与SpringBoot(1.5.9-RELEASE)一起运行。

我有两个视图,分别是“ view1”和“ view2”。

问题在于Vaadin仅识别“ example.com/#!view1”和“ example.com /#!view2”。

我想要的是“ example.com/view1”和“ example.com/view2”。尽管使用了SpringViews等,但我似乎无法使其工作。如果删除“#!”,我得到的只是404。从路径上。

这是我的一些配置设置。请让我知道是否需要更多。

谢谢!

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
....
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <vaadin.version>8.3.1</vaadin.version>
</properties>
....
<dependency>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-spring-boot-starter</artifactId>
</dependency>

AppConfiguration.java

@SpringBootConfiguration
@ComponentScan("com.example")
@EntityScan("com.example")
@EnableVaadin
@EnableVaadinServlet
public class AppConfiguration {
}

AppUI.java

@SpringUI
@Theme("valo")
public class AppUI extends UI {
    ....
    @PostConstruct
    private void setup() {
        Navigator navigator = new Navigator(this, this);
        navigator.addView("", welcomeView);
        navigator.addView("view1", view1View);
        navigator.addView("view2", view2View);
    }

View1和View2

@SpringComponent
@UIScope
@SpringView(name = View1View.NAME, ui = AppUI.class)
public class View1View extends VerticalLayout implements View, Serializable {
    public static final String NAME = "view1";
    ....

@SpringComponent
@UIScope
@SpringView(name = View2View.NAME, ui = AppUI.class)
public class View2View extends VerticalLayout implements View, Serializable {
    public static final String NAME = "view2";
    ....

1 个答案:

答案 0 :(得分:0)

哦,我的话。整天都在看,我偶然发现了自己的答案。

在您的UI元素中添加@PushStateNavigation可以解决此问题。

希望这个答案对其他人有帮助。