0

I have a OneToOne relation for my Course Entity.In course create page I want to select relation field (Teacher) from a drop down list (selectOneMenu). as I know for this kind of operation you have to implement the Converter interface.but there is problem in my implemented class. my EJB annotation dose not work. so i cannot retrieve the convert value from my database.

Teacher relation for showing the list of teacher in selectOneMenu.It works very well

@ManagedBean
@ApplicationScoped
public class TeacherRelation {

@EJB
private TeacherFacade teacherFacade;

public List<Teacher> getAllTeachers() {
    List<Teacher> teacherList=new ArrayList<Teacher>();
    teacherList=teacherFacade.findAll();
    return teacherList;
}

}

the menu:

  <h:selectOneMenu id="teacher" value="#{courseMB.course.teacher}" converter="teacherConvertor">
            <f:selectItems value="#{teacherRelation.allTeachers}" id="items" var="teacherV" itemLabel="#{teacherV.lastName}" />
        </h:selectOneMenu>

and finally important one.The implemented class

@RequestScoped
@ManagedBean
@FacesConverter("teacherConvertor")
public class TeacherConvertor implements Converter,Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;

@EJB
private static TeacherFacade teacherFacade;



@Override
public Object getAsObject(FacesContext ctx, UIComponent component, String value) {


    Long id=Long.valueOf(value);
    return teacherFacade.find(id);
}

@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object value) {

    return ((Teacher)value).getId().toString();
}

}

Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException is the Exception when teacherFacade.find is executing.actually teacherFacade is null.What i have to do?

kaveh.n
  • 243
  • 1
  • 2
  • 10

1 Answers1

0

You cannot use @EJB inside Converter, so you should use Context.lookup(Name) instead.

See also: Getting an EJB in @FacesConverter and @FacesValidator

wittakarn
  • 3,124
  • 1
  • 18
  • 31