我有一个观点:
@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);
会导致错误
答案 0 :(得分:2)
@SpringUI注释始终只定义视图的名称,它不是您提供URI参数的位置,正确的位置是navigateTo(..)方法,例如:
getUI().getNavigator().navigateTo("myview/someparameter");
这里有关于Vaadin和Spring插件的更多信息
https://vaadin.com/docs/v8/framework/advanced/advanced-spring.html