title: Executing the ActionListener of a (Primefaces) menu item leads to an IllegalStateException
body: <p>In JSF backed bean I got an <code>IllegalStateException</code> when the programmatically added action listener of a programmatically added Primefaces menu item is called. I tried both <code>request</code> and <code>session</code> scope but both are leading to the same error. Obviously there's need -- according to the stack trace -- to restore the view when an action listener is executed and I let my <code>ToolbarBean</code> implement <code>Serializable</code> with no different effect. What should I consider in order to get this to work?</p>
  
  <p><strong>User interface definition</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
  &lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.prime.com.tr/ui"&gt;
  
  &lt;h:head&gt;
      &lt;title&gt;TITLE&lt;/title&gt;
  &lt;/h:head&gt;
  
  &lt;h:body&gt;
      &lt;h:form&gt;
          &lt;p:menu model="#{toolbarBean.model}" type="tiered" /&gt;
      &lt;/h:form&gt;
  &lt;/h:body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p><strong>Backed bean providing the menu</strong></p>
  
  <pre><code>@Named
  @Scope("request")
  public class ToolbarBean implements Serializable {
  
      private static final long serialVersionUID = -8556751897482662530L;
  
      public ToolbarBean() {
          model = new DefaultMenuModel();
  
          MenuItem item;
  
          // Direct menu item
          item = new MenuItem();
          item.setValue("Menuitem 1");
          item.addActionListener(new ActionListener() {
              @Override
              public void processAction(ActionEvent event)
                      throws AbortProcessingException {
                  System.out.println(event.toString());
              }
          });
  
          model.addMenuItem(item);
  
          item = new MenuItem();
          item.setValue("Menuitem 2");
          item.addActionListener(new ActionListener() {
              @Override
              public void processAction(ActionEvent event)
                      throws AbortProcessingException {
                  System.out.println(event.toString());
              }
          });
  
          model.addMenuItem(item);
      }
  
      private MenuModel model;
  
      public MenuModel getModel() {
          return model;
      }
  }
  </code></pre>
  
  <p><strong>Exception when clicking one of the menu buttons</strong></p>
  
  <pre><code>javax.faces.FacesException: java.lang.IllegalStateException: java.lang.InstantiationException: id.co.sofcograha.baseui.ToolbarBean$1
      at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1284)
      at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:673)
      at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1290)
      at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:673)
      at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1290)
      at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:673)
      at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1290)
      at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:673)
      at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:297)
      at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:177)
      at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:119)
      at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:438)
      at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:144)
      at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:284)
      at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:182)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
      at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
  </code></pre>