【问题标题】:EJB annotation dosen't work for selectOneMenu JSF convertorEJB 注释不适用于 selectOneMenu JSF 转换器
【发布时间】: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


    【解决方案1】:

    你不能在 Converter 中使用 @EJB,所以你应该使用 Context.lookup(Name) 来代替。

    另请参阅:Getting an EJB in @FacesConverter and @FacesValidator

    【讨论】:

      猜你喜欢
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      相关资源
      最近更新 更多