java - Vaadin传递参数给 View

标签 java spring-boot vaadin vaadin8

我目前正在使用 Vaadin 制作电影数据库表格。我的问题是深层链接的整个情况。我想要一个带有电影 ID 的 url,以便能够获得具体电影的形式。

localhost:port/filmView/idOfSelectedMovie

我目前正在使用pushState,但有几个问题。

1) 当我在 Id 之前添加字符串“Film/”时,第一个选择工作正常,但是对于以下选择,网址只会不断添加此内容。

http://localhost:8081/Film/Film/Film/Film/Film/4

2) 我尝试的第二个选项是仅使用 id。效果是 url 只保留主机和端口,并去掉 ViewName

http://localhost:8801/4

我已经尝试过使用replaceState和Urifragment方法,效果并不好。

处理列表中电影选择的函数

 this.itemsList.addSelectionListener(selectionEvent -> {
            if (selectionEvent.getFirstSelectedItem().isPresent()) {
                Film selectedFilm = selectionEvent.getFirstSelectedItem().get();
                this.setupForm(selectedFilm);
                Page.getCurrent().pushState("Film/" + selectedFilm.getFilmId());

            }
        });

最佳答案

在 View 之间导航时必须执行的操作:假设您有一个带有电影列表的View,您可以从中选择一部电影。当您从该列表中选择一部影片时,您将移至该影片查看

getUI().getNavigator().navigateTo(FilmView + "/" + filmId); //let's say id 88

这样,您将导航到http://localhost:8081/Film/88

现在,在您的 FilmView 中,您可以获取并使用此 id,例如:

public class FilmView extends VerticalLayout implements View{
    @Override
    public void enter(ViewChangeEvent event) {
        String yourPassedId = event.getParameters();
        //do stuff with your id, for example loading from DB
    }
}

这样,您就可以通过硬链接(hard link)访问您想要的每部电影,例如http://localhost:8081/Film/88

关于java - Vaadin传递参数给 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51533838/

相关文章:

java - 使用 FlexJSON 将 JSON 解析为 Map<String, Entity>

显示为 Null 的 Spring 属性

java - spring 在单元测试中是否使用 application.properties?

Eclipse 类型...的层次结构与@Configurable注解不一致

css - 通过css修改shadowroot元素的样式

java - 为什么我的代码不更新我的实体对象? Spring Hibernate MVC 应用程序

java - 有没有办法将 2 个数据库字段映射到 JPA 中的自定义对象?

java - 我需要我的 Spring Boot Web 应用程序在 JUnit 中重新启动

java - 如何设置 DataProvider 从后端获取的元素数量?

java - 动态数据库连接的连接池