我现在正在使用 Spring + Vaadin JSP 集成。我正在网上商店的管理面板工作。 我已经完成了 Spring 服务器并成功将 Vaadin UI 添加到其中,但是 vaadin UI 中的注释(@Autowired 等)不起作用,因为服务器分为两个 servlet(dispacherServlet 和 vaadinServlet)。大多数服务器页面都与调度程序 servlet 一起使用,只有管理面板与 Vaadin 一起使用。我需要将 JPA 存储库和服务连接到 vaadin UI。您能帮我修复它并将服务连接到 UI 吗? 用户界面类:
@Theme("valo")
@Title("Administration panel")
@SpringUI
public class Administration extends UI {
@Autowired
LoginService service; //null
@Override
protected void init(VaadinRequest request) {
AbsoluteLayout layout = new AbsoluteLayout();
setContent(layout);
TabSheet tabs = new TabSheet();
tabs.setSizeFull();
UsersTab usersTab= new UsersTab();
CategoriesTab categoriesTab = new CategoriesTab();
tabs.addComponent(usersTab.getLayout());
tabs.addComponent(categoriesTab.getLayout());
layout.addComponent(tabs);
}
@WebServlet(urlPatterns = {"/administration","/administration/*","/VAADIN/*"},asyncSupported = true)
@VaadinServletConfiguration(ui = Administration.class, productionMode = false)
public static class AdministrationVaadinServlet extends VaadinServlet
{
}
}
最佳答案
要使 Vaadin UI 类成为 Spring 托管 bean,您不能使用在代码片段中扩展的默认 VaadinServlet。
在大多数情况下,您实际上根本不需要呈现 servlet,但 Vaadin Spring 中的上下文监听器会自动为您创建它。如果您出于某种原因需要对 servlet 进行一些自定义,请扩展 SpringVaadinServlet 类而不是普通的 VaadinServlet。
如果您使用 Spring Boot,只需删除 servlet 声明即可。与非 Boot 配置相同,但是您需要在配置类中使用 @EnableVaadin。请参阅Vaadin Spring tutorial如果您不使用 Spring Boot,请获取更多设置说明。
关于java - UI 中的 Spring + Vaadin 注解 @Autowired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38791257/