title: <h:selectOneMenu> doesn't fire the actionListener
body: <p>I am new in topic JSF and develop a simple web dialog:
  My currently problem is: that my selectOneMenu component doesn't fire the actionListener and doesn't reRender the other components. 
  Here is my JSF page:</p>
  
  <pre><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
  &lt;%@page language="java" contentType="text/html; charset=ISO-8859-1"
      pageEncoding="ISO-8859-1"%&gt;
  &lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
  &lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
  &lt;%@ taglib uri="http://richfaces.org/rich" prefix="rich"%&gt;
  &lt;%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%&gt;
  
  
  &lt;html&gt;
  &lt;head&gt;
  &lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
  &lt;meta http-equiv="cache-control" content="no-cache, must-revalidate"&gt;
  &lt;link href='styles/kn.css' rel="styleSheet" type="text/css" /&gt;
  &lt;/head&gt;
  
  &lt;style&gt;
  .top {
      vertical-align: top;
  }
  &lt;/style&gt;
  
  &lt;body&gt;
  
      &lt;f:view&gt;
  
          &lt;f:loadBundle basename="messages" var="msg" /&gt;
  
          &lt;h:form id="navigation"&gt;
              &lt;%@include file="include/kn_header.jsp"%&gt;
          &lt;/h:form&gt;
          &lt;h:form &gt;
              &lt;rich:panel styleClass="mainPanel" header="#{msg.log_title}"
                  id="logviewer"&gt;
  
  
  
                  &lt;h:selectOneMenu value="#{logviewer.machine} " onchange="submit()" immediate="true"&gt;
                      &lt;f:selectItems value="#{logviewer.machineList}" /&gt;
                      &lt;a4j:support event="onchange"
                          actionListener="#{logviewer.processValueChanged}"
                          ajaxSingle="true" immediate="true" reRender="progressPanel" /&gt;
                  &lt;/h:selectOneMenu&gt;
  
                  &lt;rich:spacer height="10px" /&gt;
                  &lt;a4j:outputPanel id="progressPanel"
                      rendered="#{logviewer.isMachine}"&gt;
                      &lt;rich:progressBar value="#{logviewer.currentValue}" interval="1000"
                          label="#{logviewer.currentValue} %" enabled="#{logviewer.enabled}"
                          minValue="-1" maxValue="100" reRenderAfterComplete="progressPanel"&gt;
                          &lt;f:facet name="initial"&gt;
                              &lt;br /&gt;
                              &lt;a4j:commandButton action="#{logviewer.startProcess}"
                                  value="Start Download" reRender="progressPanel"
                                  rendered="#{logviewer.buttonRendered}"
                                  style="margin: 9px 0px 5px;" /&gt;
  
                          &lt;/f:facet&gt;
                          &lt;f:facet name="complete"&gt;
                              &lt;br /&gt;
                              &lt;rich:spacer height="10px" /&gt;
                              &lt;a4j:commandButton id="doDownload"
                                  action="#{logviewer.doDownload}" value="button"
                                  alt="#{msg.download}" title="#{msg.download}"
                                  image="#{icon.download}"&gt;
  
                                  &lt;rich:toolTip value="#{msg.download}"
                                      style="background-color:#{richSkin.generalBackgroundColor}; border-color:#{richSkin.headerBackgroundColor}"&gt;
                                  &lt;/rich:toolTip&gt;
  
                              &lt;/a4j:commandButton&gt;
                              &lt;div class="TextArea"&gt;
                                  &lt;rich:panel styleClass="mainPanel"&gt;
                                      &lt;h:inputTextarea id="logView" value="#{logviewer.log}"
                                          rows="35" style="font-size:10pt; width:100%" readonly="true" /&gt;
                                  &lt;/rich:panel&gt;
                              &lt;/div&gt;
                          &lt;/f:facet&gt;
                      &lt;/rich:progressBar&gt;
                  &lt;/a4j:outputPanel&gt;
  
  
              &lt;/rich:panel&gt;
          &lt;/h:form&gt;
  
      &lt;/f:view&gt;
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p>and hier is my Bean:</p>
  
  <pre><code>package com.kn.documentserver.jsf;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import javax.faces.event.ValueChangeEvent;
  import javax.faces.model.SelectItem;
  
  
  import com.kn.commons.util.BeanLocator;
  import com.kn.dcs.distribution.DownloadFile;
  import com.kn.documentserver.entity.Machine;
  import com.kn.documentserver.interfaces.IMachine;
  
  public class LogviewerBean extends AbstractBean {
  
      // private final static Logger LOG =
      // Logger.getLogger(AdministrationBean.class);
  
      private List&lt;SelectItem&gt; machineList;
  
      private Machine machine;
      private int maxlength;
      private String logfile= null;
      private DownloadFile logFile;
      private boolean buttonRendered = true;
      private boolean enabled = false;
      IMachine s = BeanLocator.lookup(IMachine.class,
              "java:global/KN_DocumentServerFrontendJBoss/MachineBean");
  
      public LogviewerBean() {
          super();
          machineList = new ArrayList&lt;SelectItem&gt;(); 
          initMachineList(readMachineList());
      }
  
      private List&lt;Machine&gt; readMachineList() {
  
          return s.findAll();
      }
  
      private void initMachineList(List&lt;Machine&gt; machines) {
          for (Machine m : machines) {
              if (m.getMachineName().contains("KN")
                      &amp;&amp; !m.getMachineName().equals("ASKNGHST")
                      &amp;&amp; !m.getMachineName().equals("ASKNITRA")) {
                  SelectItem item= new SelectItem(m.getMachineName(),m.getMachineName());
              machineList.add(item);
              }
          }
      }
  
      public List&lt;SelectItem&gt; getMachineList() {
          return machineList;
      }
      public void changeEvent() {
          System.out.println("Works");
      }
  
      public void setMachineList(List&lt;SelectItem&gt; machineList) {
          this.machineList = machineList;
      }
  
      public Machine getMachine() {
          return machine;
      }
  
      public String getLog() {
          return logfile;
      }
  
  //  public GenericConverter getMachineConverter() {
  //      
  //      return new GenericConverter(machineList.values());
  //  }
  
      public void setMachine(Machine machine) {
  
          this.machine = machine;
      }
  
      public String processValueChanged(ValueChangeEvent vce) {
          String temp = (String) vce.getNewValue();
          this.machine=s.findByName(temp);
          return null;
  
      }
  
      public void doshowLog() {
          setMachine(this.machine);
  
      }
  
      public int getMaxlength() {
          return maxlength;
      }
  
      public void setMaxlength(int maxlength) {
          this.maxlength = maxlength;
      }
  
      public boolean getIsMachine() {
          return (this.machine == null) ? false : true;
      }
  
      public String getLogfile() {
          return logfile;
      }
  
      public String startProcess() {
          setEnabled(true);
          setButtonRendered(false);
          logFile = new DownloadFile(machine);
          System.out.println(getTotalValue());
          logFile.start();
          return null;
      }
  
      public void setLogfile() {
          byte[] bytes = logFile.getLogfileAsbyte();
          if (bytes != null) {
              this.logfile = new String(bytes);
          }
  
      }
  
      public boolean getIsLogfileDownloaded() {
          return (this.logfile == null) ? false : true;
      }
  
      public long getTotalValue() {
          return logFile.getFilelength();
      }
  
      public Long getCurrentValue() {
          if (isEnabled()) {
              Long current = new Long(logFile.getCurrfilelength());
              current = (current * 100) / getTotalValue();
              if (current &gt;= 100) {
                  setButtonRendered(true);
                  setLogfile();
                  return Long.valueOf(101);
              } else {
                  return current;
              }
  
          } else {
              return Long.valueOf(-1);
          }
  
      }
  
      public boolean isEnabled() {
          return enabled;
      }
  
      public void setEnabled(boolean enabled) {
          this.enabled = enabled;
      }
  
      public boolean isButtonRendered() {
          return buttonRendered;
      }
  
      public void setButtonRendered(boolean buttonRendered) {
          this.buttonRendered = buttonRendered;
      }
  
  
  
  
  }
  </code></pre>
  
  <p>Could you please help me to investigate, what exactly going wrong.</p>
  
  <p>Kind regards
  Alex</p>