Существует плагин, который расширяет CSS, чтобы включить некоторые нестандартные функции, которые действительно могут помочь при разработке веб-сайтов. Это называется EQCSS .
Одна из вещей, которые добавляет EQCSS, является родительским селектором. Он работает во всех браузерах IE8 и выше. Вот формат:
@element 'a.active' {
$parent {
background: red;
}
}
Итак, здесь мы открыли запрос элемента для каждого элемента a.active
, а для стилей внутри этого запроса такие вещи, как $parent
, имеют смысл, потому что есть контрольная точка , Браузер может найти родителя, потому что он очень похож на parentNode
в JavaScript.
Вот демонстрация $parent
и еще одной демонстрации $parent
, которая работает в IE8 , а также снимок экрана, если у вас нет IE8 для тестирования с помощью .
EQCSS также включает в себя метаселектора $prev
для элемента перед выбранным элементом, $this
только для тех элементов, которые соответствуют запросу элемента, и многое другое.
Вы упомянули в комментарии, что поле gender
в вашем объекте Student
на самом деле является Enum, а не String.
Ваша ошибка состояла в том, что вы определили ComboBox с типом String вместо вашего полового перечисления.
Предполагая, что ваш половой enum класс называется Gender
, это будет работать:
ComboBox<Gender> gender = new ComboBox<Gender>("Gender");
Binder binder = new Binder<Student>(Student.class);
binder.bind(gender, Student::getGender, Student::setGender);
Вы можете добавить ItemLabelGenerator
в ComboBox, чтобы определить, как должно отображаться ваше гендерное перечисление. По умолчанию он будет использовать toString()
класса. Но вы можете использовать его, например, для сборки Vaadin Components, если хотите. посмотрите, как это делается в документации ).
Я обнаружил, что в vaadin 8 используется bindInstanceFields для привязки данных формы к классу.
Binder binder = new Binder<Student>(Student.class);
binder.bindInstanceFields(this);
binder.readBean(student);