title: how can I validate selectOneMenu's value?
body: <p>I was validating my form, and I can get value of textbox but always retrieve null value in 
  the uiClass variable (<code>Error: java.lang.NullPointerException</code>):
  Any suggest ?</p>
  
  <p>Exception: <br></p>
  
  <pre><code>WARNING: /jsf/report/Edit.xhtml @39,99 listener="#{studentController.validate}": java.lang.NullPointerException
  javax.el.ELException: /jsf/report/Edit.xhtml @39,99 listener="#{studentController.validate}": java.lang.NullPointerException
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
      at com.sun.faces.facelets.tag.jsf.core.DeclarativeSystemEventListener.processEvent(EventHandler.java:131)
      at javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2464)
      at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
      at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2168)
      at com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:2116)
      at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:288)
      at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:246)
  
  Caused by: java.lang.NullPointerException
      at entities.StudentController.validate(StudentController.java:163)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)  
  
  @ManagedBean()
  @SessionScoped
  public class StudentController implements Serializable {
      public void validate(ComponentSystemEvent event) {
          FacesContext fc = FacesContext.getCurrentInstance();
          UIComponent components = event.getComponent();
  
          UIInput uiName = (UIInput) components.findComponent("frmStudent:name");
          UIInput uiClass = (UIInput) components.findComponent("frmStudent:myclass");
  
          String name = uiName.getLocalValue().toString();
          String myclass = uiClass.getLocalValue().toString();
  
          if (name.equals("") || name == null || name.isEmpty()) {
              FacesMessage msgName = new FacesMessage("Please enter name !");
              fc.addMessage(components.getClientId(), msgName);
              fc.renderResponse();
          } else if (myclass.equals("") || myclass == null || myclass.isEmpty()) {
              FacesMessage msgClass = new FacesMessage("Please select a class !");
              fc.addMessage(components.getClientId(), msgClass);
              fc.renderResponse();
          }
      }
  }
  </code></pre>
  
  <p>My XHTML</p>
  
  <pre><code>&lt;h:message for="textPanel" style="color:red;" /&gt;
  &lt;h:panelGrid id="textPanel" columns="4"&gt;
    &lt;f:event listener="#{studentController.validate}" type="postValidate" /&gt;
      &lt;h:inputText id="name" value="#{studentController.selected.name}" size="20" /&gt;
      &lt;h:selectOneMenu id="myclass" value="#{studentController.selected.myclass}" style="width:180px;"&gt;
          &lt;f:selectItem itemLabel="Select ..." itemValue="#{null}" noSelectionOption="true" /&gt;
          &lt;f:selectItems value="#{studentController.classItems}"/&gt;
      &lt;/h:selectOneMenu&gt;
  &lt;/h:panelGrid&gt;
  </code></pre>