Недавно начал работать c vaadin 8, и все никак не получается менять стили. Например я пишу свой стиль в файл mytheme.scss ,далее запись переносится в style.css,но на этом все, я добавляю его например в Label методом setStyleName(class_name); и ничего не меняется.
http://mydomain/VAADIN/themes/mytheme/styles.css
Если данный запрос присутствует, но статус ответа != 200 значит у Вас проблема с конфигурацией веб-приложения, и в частности проблема с отдачей ресурсов. В разных стеках данная проблема решается по-разному. Я чаще использую Spring, и для того чтобы отдать кастомные Vaadin ресурсы использую следующее правило в классе настройки MVC:
registry.addResourceHandler("/VAADIN/**").addResourceLocations("classpath:/VAADIN/");
Сам класс выглядит примерно так:
@Configuration
@EnableWebMvc
@ComponentScan("com.vaadin.spring.boot")
public class MVCConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {
// ...
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
// ...
registry.addResourceHandler("/VAADIN/**").addResourceLocations("classpath:/VAADIN/");
// ...
}
// ...
}
мои ресурсы при этом лежат в src\main\resources\VAADIN\themes\mytheme\*
Если же запрос на загрузку Ваших стилей отсутствует
то скорее всего Вы не установили свою тему в Vaadin приложении.
По умолчанию Vaadin 8 использует тему Valo и в таком случае, в списке запросов должен присутствовать запрос http://mydomain/VAADIN/themes/valo/styles.css
.
В данном случае Vaadin не будет загружать стили Вашей темы, поскольку он ничего о ней не знает.
Для того чтобы установить свою тему необходимо проставить аннотацию @Theme
над Вашим UI-классом:
@Theme("mytheme")
public class MyUI extends UI {
@Override
protected void init(VaadinRequest request) {
...
}
}
Также если Вы не хотите полностью заменять текущую тему, а лишь добавить пару-тройку дополнительных стилей, Вы можете просто указать дополнительные ресурсы с помощью аннотаций @StyleSheet
, @JavaScript
в UI - классе.(Путь к ресурсам может отличаться в зависимости от конфигурации Вашего проекта - будьте осторожны)
@StyleSheet("app://../VAADIN/themes/valo/additional.css")
@JavaScript("app://../VAADIN/themes/valo/additional.js")
public class VaadinUI extends UI {
// ...
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Помогите пожалуйста реализовать простейший слайдер на css как на примере