在Vaadin中传递和接收数据

时间:2018-04-15 12:04:32

标签: java spring-boot vaadin

我有一个观点:

@SpringUI(path="order")
@Title("order")
public class OrderGUI extends UI{

我会将参数传递给其他人:

@SpringUI(path="orderNumber")
@Title("Order number")
public class GetOrderNumber extends UI {

我尝试通过以下方式发送参数(orderNumber):

getUI().getPage().setUriFragment(orderNumber);
getUI().getPage().setLocation("orderNumber");

然后转到/orderNumber,但是当试图通过以下方式捕获它时:

String fragment = getPage().getUriFragment();

但是

System.out.println("Fragment: " + fragment);

Fragment: null

如何将参数从一个Vaadin视图发送到另一个视图?

@Edit 它接近工作。我已将我的视图更改为:

@SpringView(name = "GetOrderNumber")
@Title("Order number")
public class GetOrderNumber extends VerticalLayout implements View {

并在@SpringUI中getUI().getNavigator().navigateTo("GetOrderNumber/" + orderNumber); 它实际上仍然会抛出java.lang.IllegalArgumentException: Trying to navigate to an unknown state '' and an error view provider not present但是它有效。我的意思是所有的时间我去localhost:8080 /订购

@SpringUI(path="order")
public class OrderGUI extends UI {

抛出错误但随后按预期工作 - 转到查看并正确传递参数。我不知道为什么navigator = new Navigator(this, this);会导致错误

1 个答案:

答案 0 :(得分:2)

@SpringUI注释始终只定义视图的名称,它不是您提供URI参数的位置,正确的位置是navigateTo(..)方法,例如:

getUI().getNavigator().navigateTo("myview/someparameter");

这里有关于Vaadin和Spring插件的更多信息

https://vaadin.com/docs/v8/framework/advanced/advanced-spring.html