2 Replies Latest reply on Nov 15, 2012 5:44 PM by Fericit Bostan

    h:selectManyCheckbox inside rich:popupPanel not performing assignments

    Fericit Bostan Newbie

      I'm attempting to use the h:selectManyCheckbox to assign a limited number of objects to a parent object.  ( User -> Items) I'm able to get the popupPanel to render correctly and display the current assigned values as selected. The problem is that when I select additional items they do not get assigned to the parent object prior to the invocation of the save action.


      I have a converter defined but it never gets invoked. I've also defined a valueChangeListener on the selectManyCheckbox but no values get passed in. The result is an empty array.


              <rich:popupPanel id="user-items" modal="true" autosized="true" resizeable="false" zindex="1002"
                  styleClass="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable" moveable="true">
                  <f:facet name="header">
                      <h:outputText value="#{msg['usermgmt.label.edit.user.items']}" />
                  <f:facet name="controls">
                      <h:outputLink value="#" onclick="#{rich:component('user-items')}.hide(); return false;">
                  <a4j:region id="items-edit" styleClass="region">
                      <h:panelGroup styleClass="region">
                              <h:outputFormat id="user-items-title" value="#{msg['usermgmt.edit.user.items.title']}">
                                  <f:param value="#{userListController.selectedUser.name}"></f:param>
                          <richext:spacer height="10" />
                          <h:panelGroup layout="block" styleClass="items">
                              <h:selectManyCheckbox id="user-items-checkbox" value="#{userListController.selectedItems}"
                                  converter="#{itemsConverter}" valueChangeListener="#{userListController.processValueChange}" >
                                  <f:selectItems value="#{userListController.items}" />
                          <richext:spacer height="20" />
                          <h:panelGroup layout="block" styleClass="actions">
                              <h:panelGroup layout="block" styleClass="button">
                                  <a4j:commandButton value="#{msg['user.label.update']}" execute="@region"
                                      onclick="saveItems(); return false;" />
                              <h:panelGroup layout="block" styleClass="button">
                                  <a4j:commandButton value="#{msg['delete.cancel']}"
                                      onclick="#{rich:component('user-items')}.hide(); return false;" />
              <a4j:jsFunction name="saveItems" action="#{userListController.saveItems}" render="userTable" execute="@form"
                  oncomplete="#{rich:component('user-items')}.hide();" />


      The entire page is composed inside of a single <h:form> element, including the popupPanel.


      The user is correctly assigned when the Edit Items button is selected. The backing bean is invoked and the selected user is assigned correctly.



                          <rich:column rendered="#{request.isUserInRole('ROLE_ADMIN')}">
                                  <a4j:commandButton styleClass="item-button" value="#{msg['usermgmt.label.edit.items']}"
                                      render="user-items-title user=item-checkbox" />


      My backing bean has the following defined:



      public class UserListController implements Serializable, ValueChangeListener {
          private User selectedUser;
          private List<Market> selectedItems;
          private List<SelectItem> items;
           private void postConstruct() {
              items = new ArrayList<SelectItem>();
              for (Item item : getItemService().findAll()) {
                  items.add(new SelectItem(item, item.getName()));



      So what am I missing? Why isn't my itemConverter invoked and the assignment performed? I've spent a good amount of time trying to figure this out to no avail, so any help you can provide is greatly appreciated.


      Thanks in advance...