title: JSF 2.0 "Conversion Error setting value 'courseID' for 'null Converter'.!!How can I avoid this kinda error?
body: <p>I am working on a web application using PrimeFaces, JPA, Hibernate and JSF 2.0. </p>
  
  <p>I have two entities <code>Students</code> and <code>Course</code> with an many to one relationship. </p>
  
  <pre class="lang-java prettyprint-override"><code>@Entity
  @Table(name = "STUDENTS")
  public class Students extends MainUsers implements Serializable {
  
      private String firstName;
      private String lastName;
      private long mobile;
      private String jobTitle;
      private int duration;
      @Temporal(TemporalType.TIMESTAMP)
      private Date startDate;
      @Temporal(TemporalType.TIMESTAMP)
      private Date endDate;
  
      @ManyToOne
      @JoinColumn(name = "course_id", nullable = true)
      private Course company;
  
      // Getters and setters.
  }
  </code></pre>
  
  <pre class="lang-java prettyprint-override"><code>@Entity
  @Table(name = "COURSE")
  @NamedQueries({
          @NamedQuery(name = "course.findCourseByCourseId", query = "select c from Course c where c.Id =:id"),
          @NamedQuery(name = "course.findCourseByCourseName", query = "select c from Course c where c.courseName =:courseName") })
  public class Course implements Serializable {
  
      public static final String FIND_COURSE_BY_COURSE_ID = "course.findByCourseId";
      public static final String FIND_COURSE_COURSE_NAME = "course.findByCourseName";
  
      private static final long serialVersionUID = 1L;
  
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private int Id;
      private String courseName;
      @OneToMany(targetEntity = Students.class, mappedBy = "course", fetch = FetchType.LAZY)
      private List&lt;Students&gt; students;
  
      // Getters and setters.
  
      @Override
      public int hashCode() {
          return getId();
      }
  
      @Override
      public boolean equals(Object obj) {
          if (obj instanceof Course) {
              Course course = (Course) obj;
              return course.getId() == Id;
          }
  
          return false;
      }
  
  }
  </code></pre>
  
  <p>I have a registration page where it takes student's names, email, password and course. For selecting the course I have used this </p>
  
  <pre class="lang-html prettyprint-override"><code>&lt;h:outputText value="Course :" /&gt;
  &lt;p:selectOneMenu value="#{courseMB.course}"&gt;
      &lt;f:selectItem itemLabel="Select one Course" itemValue="" /&gt;
      &lt;f:selectItems value="#{courseMB.allCourses}" var="crs"
          itemLabel="#{crs.courseName}" itemValue="#{crs.id}" /&gt;
      &lt;f:converter converterId = "courseConverter"/&gt;  
  &lt;/p:selectOneMenu&gt;
  </code></pre>
  
  <p>To create a student I have the following method in StudentMB class:</p>
  
  <pre class="lang-java prettyprint-override"><code>public void createStudent() {       
      String test = student.getEmail();
  
      if (getStudentFacade().isStudentExist(test)){
          System.out.println(test);
      } else {
          try {
              student.setActivation_key(hashKey());
              student.setRole(Role.STUDENT);
              student.setActive(0);
              getStudentFacade().createStudent(student);
              displayInfoMessageToUser("Created with success");
              SendEmail.Send(username, password, student.getEmail(), title, linkToSend());
              loadStudent();
              resetStudent();
          } catch (Exception e) {
              displayErrorMessageToUser("Opps, we could not create the user. Try again");
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>I don't really know how to get the course into StudentMB and persist that into the database. The current methodology gives me an error </p>
  
  <blockquote>
    <p>Conversion Error setting value 'courseID' for 'null Converter'.</p>
  </blockquote>
  
  <p>I tried to use a converter but I am getting empty string into the argument.</p>
  
  <pre class="lang-java prettyprint-override"><code>@FacesConverter(value="courseConverter", forClass = com.model.Course.class)
  public class CourseConverter implements Converter  {
  
      @Override
      public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
          CourseFacade courseFacade = new CourseFacade();
          int courseId;
  
          try {
              courseId = Integer.parseInt(submittedValue);
          } catch (NumberFormatException exception) {
              throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, 
                  "Type the name of a Course and select it (or use the dropdown)", 
                  "Type the name of a Course and select it (or use the dropdown)"));
          }
  
          return courseFacade.findCourse(courseId);
      }
  
      @Override
      public String getAsString(FacesContext context, UIComponent component, Object modelValue) {
          Course course = null;
          if (modelValue instanceof Course){
              course = (Course) modelValue;
              StringBuilder asString = new StringBuilder();
              asString.append(course.getId()+"-");
              asString.append(course.getCourseName());
              return asString.toString();
  
          }
          return "";
      }
  
  }
  </code></pre>
  
  <p>How is this caused and how can I solve it?</p>