【发布时间】:2014-11-09 17:34:16
【问题描述】:
我的课程实体有一个 OneToOne 关系。在课程创建页面中,我想从下拉列表 (selectOneMenu) 中选择关系字段 (Teacher)。正如我所知,对于这种操作,您必须实现 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 Faces Servlet 的 Servlet.service() 抛出异常:java.lang.NullPointerException 是执行teacherFacade.find 时的异常。实际上teacherFacade 为null。我该怎么办?
【问题讨论】:
标签: java jsf-2 ejb-3.0 one-to-one selectonemenu