h:selectManyCheckbox

HtmlSelectManyCheckbox is a UISelectMany component that renders checkboxes and enables the user to select multiple values.

Conversion Usage

The value attribute can be converted by specifying an f:converter child tag.

Source Code

  1. <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"
  2. xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
  3.  
  4. <h:form>
  5. <h:outputLabel value="#{i18n['which-of-the-following-dates-are-in-the-18th-century']}" />
  6. <h:messages globalOnly="true" styleClass="feedback" />
  7. <h:selectManyCheckbox id="selectManyCheckbox" layout="pageDirection" selectedClass="inline-label" unselectedClass="inline-label"
  8. value="#{selectManyModelBean.dates}">
  9. <f:convertDateTime pattern="MM/dd/yyyy G" />
  10. <f:selectItem itemLabel="April 5, 33 AD" itemValue="04/05/0033 AD" />
  11. <f:selectItem itemLabel="October 31, 1517 AD" itemValue="10/31/1517 AD" />
  12. <f:selectItem itemLabel="July 4, 1776 AD" itemValue="07/04/1776 AD" />
  13. <f:selectItem itemLabel="July 14, 1789 AD" itemValue="07/14/1789 AD" />
  14. </h:selectManyCheckbox>
  15. <hr />
  16. <h:commandButton action="#{selectManyBackingBean.submitAnswer}" value="#{i18n['submit']}">
  17. <f:ajax execute="@form" render="@form" />
  18. </h:commandButton>
  19. <h:panelGroup id="modelValue">
  20. <ui:repeat value="#{selectManyModelBean.dates}" var="date">
  21. <h:outputText value="#{date}">
  22. <f:convertDateTime pattern="MMM d, yyyy G" />
  23. </h:outputText><br />
  24. </ui:repeat>
  25. </h:panelGroup>
  26. </h:form>
  27.  
  28. </ui:composition>
  1. @ManagedBean
  2. @RequestScoped
  3. public class SelectManyModelBean {
  4.  
  5. private List<Long> favoriteIds;
  6. private List<Long> benefitIds = Arrays.asList(2L, 4L);
  7. private List<Date> dates;
  8. private String phase;
  9.  
  10. @ManagedProperty(name = "liferayBenefitService", value = "#{liferayBenefitService}")
  11. private LiferayBenefitService liferayBenefitService;
  12.  
  13. public List<Long> getBenefitIds() {
  14. return benefitIds;
  15. }
  16.  
  17. public List<Date> getDates() {
  18. return dates;
  19. }
  20.  
  21. public List<Long> getFavoriteIds() {
  22. return favoriteIds;
  23. }
  24.  
  25. public List<LiferayBenefit> getLiferayBenefits() {
  26. return liferayBenefitService.getLiferayBenefits();
  27. }
  28.  
  29. public String getPhase() {
  30. return phase;
  31. }
  32.  
  33. public void setBenefitIds(List<Long> benefitIds) {
  34. this.benefitIds = benefitIds;
  35. }
  36.  
  37. public void setDates(List<Date> dates) {
  38. this.dates = dates;
  39. }
  40.  
  41. public void setFavoriteIds(List<Long> favoriteIds) {
  42. this.favoriteIds = favoriteIds;
  43. }
  44.  
  45. public void setLiferayBenefitService(LiferayBenefitService liferayBenefitService) {
  46. this.liferayBenefitService = liferayBenefitService;
  47. }
  48.  
  49. public void setPhase(String phase) {
  50. this.phase = phase;
  51. }
  52. }
  1. @ManagedBean
  2. @RequestScoped
  3. public class SelectManyBackingBean {
  4.  
  5. private static final Logger logger = LoggerFactory.getLogger(SelectManyBackingBean.class);
  6.  
  7. @ManagedProperty(name = "selectManyModelBean", value = "#{selectManyModelBean}")
  8. private SelectManyModelBean selectManyModelBean;
  9.  
  10. public void setSelectManyModelBean(SelectManyModelBean selectManyModelBean) {
  11. this.selectManyModelBean = selectManyModelBean;
  12. }
  13.  
  14. public void submit() {
  15. PhaseId phaseId = FacesContext.getCurrentInstance().getCurrentPhaseId();
  16. logger.info("submit: phaseId=[{0}] favoriteId=[{1}]", phaseId.toString(), selectManyModelBean.getFavoriteIds());
  17. }
  18.  
  19. public void submitAnswer() {
  20. List<Date> selectedDates = selectManyModelBean.getDates();
  21. TimeZone gmtTimeZone = TimeZone.getTimeZone("GMT");
  22.  
  23. boolean correct = (selectedDates.size() > 0);
  24.  
  25. for (Date selectedDate : selectedDates) {
  26. Calendar calendar = new GregorianCalendar(gmtTimeZone);
  27. calendar.setTime(selectedDate);
  28.  
  29. int selectedYear = calendar.get(Calendar.YEAR);
  30.  
  31. if ((selectedYear <= 1700) || (selectedYear > 1800)) {
  32. correct = false;
  33.  
  34. break;
  35. }
  36. }
  37.  
  38. FacesContext facesContext = FacesContext.getCurrentInstance();
  39. FacesMessage facesMessage;
  40.  
  41. if (correct) {
  42. facesMessage = new FacesMessage("Correct!");
  43. facesMessage.setSeverity(FacesMessage.SEVERITY_INFO);
  44. }
  45. else {
  46. facesMessage = new FacesMessage("Incorrect!");
  47. facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
  48. }
  49.  
  50. facesContext.addMessage(null, facesMessage);
  51. }
  52.  
  53. public void valueChangeListener(ValueChangeEvent valueChangeEvent) {
  54.  
  55. FacesContext facesContext = FacesContext.getCurrentInstance();
  56. PhaseId phaseId = facesContext.getCurrentPhaseId();
  57. logger.debug("valueChangeListener: phaseId=[{0}]", phaseId.toString());
  58.  
  59. String phaseName = phaseId.toString();
  60. FacesMessage facesMessage = new FacesMessage("The valueChangeListener method was called during the " +
  61. phaseName + " phase of the JSF lifecycle.");
  62. facesContext.addMessage(null, facesMessage);
  63. }
  64. }
Liferay Faces Bridge Implementation 5.0.0 + Showcase Common 3.1.1 + Liferay Faces Util 3.4.1 + Mojarra 2.2.20