簡體   English   中英

在UI中使用Spring + Vaadin注釋@Autowired

[英]Spring + Vaadin annotation @Autowired in UI

我正在使用Spring + Vaadin JSP集成。 我正在為互聯網商店的管理面板工作。 我已經完成了Spring服務器並成功添加了Vaadin UI,但vaadin UI中的注釋(@Autowired等)無效,因為服務器分為兩個servlet(dispacherServlet和vaadinServlet)。 大多數服務器頁面都與調度程序servlet一起使用,只有管理面板與Vaadin一起使用。 我需要將JPA Repository和Service連接到vaadin UI。 你可以幫我解決它並將服務連接到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聲明即可。 與非引導配置相同,但您需要在配置類中使用@EnableVaadin。 如果您不使用Spring Boot,請參閱Vaadin Spring教程以獲取有關安裝的更多說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM