我的课程实体有OneToOne关系。在课程创建页面中,我想从下拉列表中选择关系字段(教师)(selectOneMenu)。正如我所知,对于这种操作,你必须实现Converter接口。但是我实现的类中存在问题。我的EJB注释无效。所以我无法从我的数据库中检索转换值。
教师关系,用于在selectOneMenu中显示教师列表。它运作良好
@ManagedBean
@ApplicationScoped
public class TeacherRelation {
@EJB
private TeacherFacade teacherFacade;
public List<Teacher> getAllTeachers() {
List<Teacher> teacherList=new ArrayList<Teacher>();
teacherList=teacherFacade.findAll();
return teacherList;
}
}
菜单:
<h:selectOneMenu id="teacher" value="#{courseMB.course.teacher}" converter="teacherConvertor">
<f:selectItems value="#{teacherRelation.allTeachers}" id="items" var="teacherV" itemLabel="#{teacherV.lastName}" />
</h:selectOneMenu>
最后重要的一个。实施的课程
@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的Servlet.service()Faces Servlet抛出异常:java.lang.NullPointerException是teacherFacade.find正在执行时的异常。实际上,teacherFacade为null。我该怎么办?
答案 0 :(得分:0)
你不能在Converter中使用@EJB,所以你应该使用Context.lookup(Name)。