我们(希望)知道vaadin-spring的registring视图的标准方式:
@SpringView(name = "")
public class ViewMain implements View {
// ...
}
@SpringView(name = "login")
public class ViewLogin implements View {
// ...
}
@SpringUI(path = "")
public class MainUI extends UI {
@Autowired
SpringViewProvider viewProvider;
@override
protected void init(....) {
Navigator navigator = new Navigator(this, this);
navigator.addProvider(viewProvider);
...
}
}
现在我有多个用户界面,ViewLogin
位于不同的公共组件中,我需要添加一些带有ViewLogin
的用户界面。
@SpringView
ViewLogin
的注释中(它是不同的包)。ViewLogin
出现在所有用户界面中。更多,我需要一些UI的不同登录视图,因为它们代表不同的界面。ViewLogin
里面可能有@Autowired
因此应该是Spring管理的。只是navigator.addView(...)
不起作用。我可以尽可能接近@SpringView
注释,但是从UI端开始吗?
答案 0 :(得分:0)
围绕消息来源进行搜索 - 实际上除了通过UI
注释之外,无法为View
配置适用的@SprngView
。
对于当前解决方案,UI
类的以下配置按预期工作:
@SpringUI(path = "")
public class MainUI extends UI {
// Now we need to configure views.
@SpringView(name = ViewMain.NAME, ui = {MainUI.class})
static private class OurViewMain extends ViewMain {}
@SpringView(name = ViewLogin.NAME, ui = {MainUI.class})
static private class OurViewLogin extends ViewLogin {}
@override
protected void init(....) {
....
}
}
所以实际上我扩展了视图而没有任何改变并注释'派生'类。这允许在一个地方编码视图并将其分配给另一个地方的UI(或多个UI)。这使得同一视图的不同命名成为不同的UI。
希望很快@SpringView
配置将不那么线性,并允许这样的事情。我认为没有任何问题可以实现。