我需要根據用於訪問應用的主機名來設置vaadin應用的主題,例如app.company.de使用「valo」,app.company.org使用「org-theme」。 如果我在UI類中設置了編程UI,我會得到一個「閃爍」,因爲首先使用來自@Theme
的主題。 我也試圖通過增加BootstrapListener
這樣的修改引導頁:按主機名設置vaadin主題
@Override
public void modifyBootstrapPage(BootstrapPageResponse response) {
Document doc = response.getDocument();
for (Element script : doc.getElementsByTag("script")) {
if (script.html().contains("\"theme\": \"valo\"")) {
String old = script.html();
String newHtml = old.replace("valo", THEME_NAME);
script.html(newHtml);
}
}
}
但是,這導致了一些逃避問題,其中之一可能會解決,但我仍然不覺得通過改變引導JS的好這樣一種拙劣的方式。
有沒有辦法掛鉤到創建引導js的地方?
我不知道這將是一個完美的解決方案,但如果您使用的是Apache HTTP服務器,你可以添加一個重寫規則/ VAADIN /主題/ VALO/*到/ VAADIN /主題/ org-theme/*根據請求標題 –
您是什麼時候設置主題的?在UI類的'init'方法中? –
@SteffenHarbich如果你在'init'中設置它,你會得到閃爍效果,至少對我來說它是7.7.3。奇怪的是,如果我嘗試在構造函數中設置它,它沒有任何作用......我得到了「馴鹿」的外觀和感覺,並且我沒有找到任何有關此行爲的參考,我想知道這是否是期望的行爲... – Morfic