CheckBoxGroup
Компонент CheckBoxGroup
обеспечивает выбор нескольких значений из списка опций, используя группу флажков (чекбоксов). Если нужно выбрать только одно значение из списка, следует использовать компонент RadioButtonGroup.
XML-имя компонента: checkBoxGroup
.
Основы
Компонент может принимать список опций из контейнера данных. Для этого используется атрибут optionsContainer
. Например:
<data>
<collection id="countriesDc" class="ui.ex1.entity.Country">
<fetchPlan extends="_local"/>
<loader id="countriesDl">
<query>
<![CDATA[select e from uiex1_Country e]]>
</query>
</loader>
</collection>
</data>
<layout>
<checkBoxGroup optionsContainer="countriesDc"
caption="Countries"/>
</layout>
В данном случае компонент CheckBoxGroup
отобразит имена экземпляров сущности Country
, находящихся в контейнере countriesDc
, а его метод getValue()
вернет Collection
выбранных экземпляров сущности.
То же самое можно сделать программно:
<data>
<collection id="countriesDc" class="ui.ex1.entity.Country">
<fetchPlan extends="_local"/>
<loader id="countriesDl">
<query>
<![CDATA[select e from uiex1_Country e]]>
</query>
</loader>
</collection>
</data>
<layout>
<checkBoxGroup id="countriesCheckBoxGroup"
caption="Countries"/>
</layout>
Обратите внимание, что в приведенном выше XML-дескрипторе optionsContainer
не назначался группе флажков countriesCheckBoxGroup
. Сделаем это программно в контроллере:
@Autowired
private CheckBoxGroup<Country> countriesCheckBoxGroup;
@Autowired
private CollectionContainer<Country> countriesDc;
@Subscribe
protected void onInit(InitEvent event) {
countriesCheckBoxGroup.setOptions(new ContainerOptions<>(countriesDc));
}
С помощью атрибута captionProperty можно указать другой атрибут сущности для отображения в компоненте.
Атрибут orientation
задает расположение элементов группы. По умолчанию элементы располагаются по вертикали. Значение horizontal
задает горизонтальное расположение.
Опции
setOptions()
Метод setOptions()
принимает одну из реализаций интерфейса Options
и позволяет работать со всеми типами опций:
@Autowired
private CheckBoxGroup<Operation> checkBoxGroup;
@Subscribe
protected void onInit(InitEvent event) {
checkBoxGroup.setOptions(new EnumOptions<>(Operation.class));
}
setOptionsEnum()
, setOptionsList()
и setOptionsMap()
работают так же, как в компоненте ComboBox.
Валидация
Для проверки введенных в компонент CheckBoxGroup
значений можно использовать валидатор во вложенном элементе validators
.
Для CheckBoxGroup
доступны следующие предопределенные валидаторы:
В приведенном ниже примере показано использование SizeValidator
для validatedCheckBoxGroup
:
<checkBoxGroup id="validatedCheckBoxGroup"
optionsContainer="customersDc"
caption="The number of customers is limited from 2 to 5">
<validators>
<size min="2" max="5"/>
</validators>
</checkBoxGroup>
События и слушатели
Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите компонент в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI. В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана. |
OptionDescriptionProvider
OptionDescriptionProvider
используется для генерации всплывающих подсказок для опций компонента CheckBoxGroup
.
В приведенном ниже примере показано использование OptionDescriptionProvider
для checkBoxGroupDesc
:
@Install(to = "checkBoxGroupDesc", subject = "optionDescriptionProvider")
protected String checkBoxGroupDescOptionDescriptionProvider(Customer customer) {
return "Email: " + customer.getEmail();
}
Чтобы создать его программно, используйте метод компонента setOptionDescriptionProvider()
.
OptionIconProvider
См. OptionIconProvider.
Validator
Добавляет экземпляр валидатора в компонент. validator
должен выбросить ValidationException
, если значение недопустимо.
Если вас не устраивают предопределенные валидаторы, добавьте свой собственный экземпляр валидатора:
@Install(to = "validCheckBoxGroup", subject = "validator")
protected void validCheckBoxGroupValidator(Collection<EducationalStage> value) {
if (value.contains(EducationalStage.NO) & value.size() > 1)
throw new ValidationException("You cannot select the No Education " +
"value together with other values");
}
ValueChangeEvent
См. ValueChangeEvent.
XML-атрибуты CheckBoxGroup
Просматривать и редактировать атрибуты, применимые к компоненту, можно с помощью панели инспектора Jmix UI в конструкторе экранов Studio. |
align - caption - captionAsHtml - captionProperty - colspan - contextHelpText - contextHelpTextHtmlEnabled - css - dataContainer - description - descriptionAsHtml - editable - enable - box.expandRatio - height - htmlSanitizerEnabled - icon - id - optionsContainer - optionsEnum - orientation - property - required - requiredMessage - responsive - rowspan - stylename - tabIndex - visible - width