如何删除“#!”来自 Vaadin 8 URL 的?
How do I remove the "#!" from Vaadin 8 URL's?
我们有一个 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";
....
天啊。一整天都在寻找,我偶然发现了自己的答案。
将 @PushStateNavigation
添加到 UI 元素可解决此问题。
希望这个回答对其他人有帮助。
我们有一个 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";
....
天啊。一整天都在寻找,我偶然发现了自己的答案。
将 @PushStateNavigation
添加到 UI 元素可解决此问题。
希望这个回答对其他人有帮助。