SelectCheckboxMenu is used to choose multiple items displayed in an overlay.
<div class="card">
<h:form>
<p:growl>
<p:autoUpdate/>
</p:growl>
<h5 class="mt-0">Basic</h5>
<p:selectCheckboxMenu id="menu" value="#{checkboxView.selectedCities}" label="Cities" style="width: 15rem"
filter="true" filterMatchMode="startsWith" panelStyle="width: 15rem" scrollHeight="250"
dynamic="true">
<f:selectItems value="#{checkboxView.cities}"/>
</p:selectCheckboxMenu>
<h5>Multiple</h5>
<p:selectCheckboxMenu id="multiple" value="#{checkboxView.selectedCities2}" label="Cities" style="min-width: 15rem"
multiple="true" filter="true" filterMatchMode="startsWith" panelStyle="width: 30rem" scrollHeight="250"
emptyLabel="Please select..." updateLabel="true">
<p:ajax event="itemUnselect" listener="#{checkboxView.onItemUnselect}"/>
<f:selectItems value="#{checkboxView.cities}"/>
</p:selectCheckboxMenu>
<h5>Grouped</h5>
<p:selectCheckboxMenu id="grouped" value="#{checkboxView.selectedCountries}" label="Countries" style="width: 15rem"
multiple="true" filter="true" filterMatchMode="startsWith" panelStyle="width: 15rem" scrollHeight="250">
<f:selectItems value="#{checkboxView.countries}"/>
</p:selectCheckboxMenu>
</h:form>
</div>
@Named
@RequestScoped
public class CheckboxView {
private String[] selectedOptions;
private String[] selectedOptions2;
private String[] selectedCities;
private String[] selectedCities2;
private List<String> cities;
private List<SelectItem> countries;
private String[] selectedCountries;
@PostConstruct
public void init() {
cities = new ArrayList<>();
cities.add("Miami");
cities.add("London");
cities.add("Paris");
cities.add("Istanbul");
cities.add("Berlin");
cities.add("Barcelona");
cities.add("Rome");
cities.add("Brasilia");
cities.add("Amsterdam");
countries = new ArrayList<>();
SelectItemGroup europeCountries = new SelectItemGroup("European Countries");
europeCountries.setSelectItems(new SelectItem[]{
new SelectItem("Germany", "Germany"),
new SelectItem("Turkey", "Turkey"),
new SelectItem("Spain", "Spain")
});
SelectItemGroup americaCountries = new SelectItemGroup("American Countries");
americaCountries.setSelectItems(new SelectItem[]{
new SelectItem("United States", "United States"),
new SelectItem("Brazil", "Brazil"),
new SelectItem("Mexico", "Mexico")
});
countries.add(europeCountries);
countries.add(americaCountries);
}
public String[] getSelectedOptions() {
return selectedOptions;
}
public void setSelectedOptions(String[] selectedOptions) {
this.selectedOptions = selectedOptions;
}
public String[] getSelectedOptions2() {
return selectedOptions2;
}
public void setSelectedOptions2(String[] selectedOptions2) {
this.selectedOptions2 = selectedOptions2;
}
public String[] getSelectedCities() {
return selectedCities;
}
public void setSelectedCities(String[] selectedCities) {
this.selectedCities = selectedCities;
}
public String[] getSelectedCities2() {
return selectedCities2;
}
public void setSelectedCities2(String[] selectedCities2) {
this.selectedCities2 = selectedCities2;
}
public List<String> getCities() {
return cities;
}
public void setCities(List<String> cities) {
this.cities = cities;
}
public List<SelectItem> getCountries() {
return countries;
}
public void setCountries(List<SelectItem> countries) {
this.countries = countries;
}
public String[] getSelectedCountries() {
return selectedCountries;
}
public void setSelectedCountries(String[] selectedCountries) {
this.selectedCountries = selectedCountries;
}
public void onItemUnselect(UnselectEvent event) {
FacesMessage msg = new FacesMessage();
msg.setSummary("Item unselected: " + event.getObject().toString());
msg.setSeverity(FacesMessage.SEVERITY_INFO);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void selectedOptionsChanged() {
String message = "selectedOptions changed to: ";
if (selectedOptions != null) {
for (int i = 0; i < selectedOptions.length; i++) {
if (i > 0) {
message += ", ";
}
message += selectedOptions[i];
}
}
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, message, null));
}
public void selectedOptions2Changed() {
String message = "selectedOptions2 changed to: ";
if (selectedOptions2 != null) {
for (int i = 0; i < selectedOptions2.length; i++) {
if (i > 0) {
message += ", ";
}
message += selectedOptions2[i];
}
}
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, message, null));
}
}