Navigation 带参数的vaadin导航
在我的项目中,我有一个jpa数据库连接,存储练习。我从数据库中读取所有练习,并将它们存储到变量allExercises中。之后,我将每个练习的标题保存在一个按钮中,将它们添加到GUI的一个框中,并添加一个click listener事件,该事件处理到下一个视图的导航。下一个视图是所选练习的详细视图。要知道我单击了哪个练习,我想将练习对象的id作为参数传递。目前,我有以下代码:Navigation 带参数的vaadin导航,navigation,parameter-passing,vaadin,vaadin-flow,Navigation,Parameter Passing,Vaadin,Vaadin Flow,在我的项目中,我有一个jpa数据库连接,存储练习。我从数据库中读取所有练习,并将它们存储到变量allExercises中。之后,我将每个练习的标题保存在一个按钮中,将它们添加到GUI的一个框中,并添加一个click listener事件,该事件处理到下一个视图的导航。下一个视图是所选练习的详细视图。要知道我单击了哪个练习,我想将练习对象的id作为参数传递。目前,我有以下代码: for(Exercise exercise : allExercises) { // create ne
for(Exercise exercise : allExercises) {
// create new button with exercise title
Button bt = new Button(exercise.getTitle());
// add button to box
boxExerciseTitle.add(bt);
// add action event
bt.addClickListener(e -> UI.getCurrent().navigate(ExerciseDetailView.class, exercise.getId()));
}
此代码不起作用。ID分别存在一个问题,即导航函数不处理这两个参数
我的目标是在细节视图中读取参数,如下所示:
public class ExerciseDetailView extends VerticalLayout implements View{
@Override
public void enter(ViewChangeEvent event) {
String myPassedId = event.getParameters();
...
}
}
如何更改代码,以便在Vaadin中将id作为参数传递?详细信息视图必须实现
HasUrlParameter
,然后在setParameter
方法中获取参数:
@Route(value = "exercise")
public class ExerciseDetailView extends VerticalLayout
implements HasUrlParameter<Long> {
@Override
public void setParameter(BeforeEvent event,
Long exerciseId) {
// find the single exercise using the given id
// Exercise exercise = exerciseRepository.findById(exerciseId);
}
}
@Route(value=“exercise”)
公共类ExerciseDetailView扩展了垂直布局
实现HasUrlParameter{
@凌驾
public void setParameter(事件前,
长时间运动){
//使用给定的id查找单个练习
//Exercise Exercise=exerciseRepository.findById(exerciseId);
}
}
文件:
如果
exercise.getId()
的类型不是长的,而是整数或其他数字,然后相应地更改HasUrlParameter
的类型。您使用的是哪个vaadin版本?@KasparScherrer:我使用的是vaadin版本14@KasparScherrer可能,但从问题中我看不到id的类型。我使用字符串是因为这一行:String myPassedId=event.getParameters()@卡斯切雷尔:好的。我不知道Vaadin<10:-)如果您使用了HasUrlParameter
,那么您必须更改。导航(ExerciseDetailView.class,exercise.getId())
到。导航(ExerciseDetailView.class,exercise.getId().toString())
。您仍然假设id很长。它可以是任何数据类型:-)我冒昧地将此添加到答案中。如果您不同意,请随时将其还原为您的版本。我正在删除这里的所有评论:)