我有spring boot应用程序与vaadin和vaadin4spring插件。在我的一个视图中,我想要显示数据库中的数据。我想显示的数据是由service类中的方法返回的。
@Service
public class UserService {
public List<Users> getUsers() ....
}查看:
@SpringView(name = Views.USERLIST) //static constant containing string "users"
public class UserlistView extends HorizontalLayout implements View {
@Autowired
private UserService userService;
@PostConstruct
public void construct() {
displaytable(userService.getUsers());
}
@Override
public void enter(ViewChangeListener.ViewChangeEvent viewChangeEvent) {}
}
UI class:
@SpringUI
@Theme("valo")
public class TUI extends UI {
@Autowired
private SpringViewProvider springViewProvider;
protected void init(VaadinRequest request) {
..
Navigator navigator = new Navigator(this, content);
navigator.addView(Views.USERLIST, UserlistView.class);
navigator.addProvider(springViewProvider);
}
}在服务器启动过程中,vaadin会识别springview -“c.v.spring.navigator.SpringViewProvider :1 SpringView found",不会显示任何异常或警告。
每次我使用navigator display时,视图中的视图(navigator.navigateTo("users"))自动连接字段都不会被注入,也不会调用后期处理方法。更奇怪的是,如果我不将视图添加到navigator对象中,并使用url直接访问视图-localhost:8080/#!用户,字段将被正确注入并调用方法construct()。
如果有用的话,这里有我的配置类
@Configuration
@ComponentScan(basePackages = { "me.project" })
@EnableAutoConfiguration
@EnableVaadinEventBus
public class TheConfig {
// contains only one bean definition - sessionfactory
}有没有人遇到过类似的问题?我到处都找不到帮助,有人能告诉我我做错了什么吗?谢谢
发布于 2016-08-02 19:07:02
当你这样做的时候
navigator.addView(Views.USERLIST, UserlistView.class);它创建了一个不是由Spring处理的StaticViewProvider,并使用'new‘创建了一个视图。所以如果你使用的是springViewProvider,那么'addView‘就不会发生Spring自动装配。
所以不要使用navigator.addView(),而是在使用Spring+Vaadin时依赖springViewProvider。
https://stackoverflow.com/questions/36435424
复制相似问题